BZDEV: Blitz and PoomaII comparing

From: Alexander Samoilov (spike@Gambit.Msk.SU)
Date: Tue Jan 12 1999 - 06:00:50 EST


Hi folks!
Happy New Year and best wishes!

Recently I compared Blitz with Pooma II performance.
At first glance Blitz outperforms Pooma II greatly, Blitz' performance
is about the same as for C arrays version, but Pooma II
performance is about ten times (one order) worser.

Maybe something wrong have been done by me?
It goes without saying that Blitz (thanks to author) has excellent
implementation, but the difference is impressive.

About compiler used for testing:

EGCS snapshot 1999-01-03,

Blitz snapshot 1998-09-03,

PoomaII distribution from http://www.acl.lanl.gov/pooma/

Hardware: UltraSparcIII with 768MB RAM

About test results: below are results for SimpleArray benchmark
in PoomaII distribution.

At first this benchmark build unmodified with
these swithes:

 /usr/bin/time eg++ -c /home/spike/pooma-2.0/benchmarks/SimpleArray/atest.cpp \
-o /home/spike/pooma-2.0/benchmarks/SimpleArray/SOLARISEGCS/atest.o \
  -ftemplate-depth-40 \
-DNOPAssert -DNOCTAssert -O3 -funroll-loops -fstrict-aliasing \
-I/home/spike/pooma-2.0/src \
-I/home/spike/pooma-2.0/lib/SOLARISEGCS

below are results:

./atest Benchmark
-----------------
Running C w/o restrict Implementation:
  N = 10...
    Correctness test value for N = 10 is 110.
  N = 21...
    Correctness test value for N = 21 is 231.
  N = 46...
    Correctness test value for N = 46 is 506.
  N = 100...
    Correctness test value for N = 100 is 1100.
  N = 215...
    Correctness test value for N = 215 is 2365.
  N = 464...
    Correctness test value for N = 464 is 5104.
  N = 1000...
    Correctness test value for N = 1000 is 11000.
Running C w/ restrict Implementation:
  N = 10...
    Correctness test value for N = 10 is 110.
  N = 21...
    Correctness test value for N = 21 is 231.
  N = 46...
    Correctness test value for N = 46 is 506.
  N = 100...
    Correctness test value for N = 100 is 1100.
  N = 215...
    Correctness test value for N = 215 is 2365.
  N = 464...
    Correctness test value for N = 464 is 5104.
  N = 1000...
    Correctness test value for N = 1000 is 11000.
Running CppTran Implementation:
  N = 10...
    Correctness test value for N = 10 is 110.
  N = 21...
    Correctness test value for N = 21 is 231.
  N = 46...
    Correctness test value for N = 46 is 506.
  N = 100...
    Correctness test value for N = 100 is 1100.
  N = 215...
    Correctness test value for N = 215 is 2365.
  N = 464...
    Correctness test value for N = 464 is 5104.
  N = 1000...
    Correctness test value for N = 1000 is 11000.
Running PoomaII Implementation:
  N = 10...
    Correctness test value for N = 10 is 110.
  N = 21...
    Correctness test value for N = 21 is 231.
  N = 46...
    Correctness test value for N = 46 is 506.
  N = 100...
    Correctness test value for N = 100 is 1100.
  N = 215...
    Correctness test value for N = 215 is 2365.
  N = 464...
    Correctness test value for N = 464 is 5104.
  N = 1000...
    Correctness test value for N = 1000 is 11000.
              C C
N w/o restrict w/ restrict CppTran PoomaII
     10 35.24 52.64 6.754 4.881
     21 36.64 60.19 9.167 5.915
     46 34.53 36.24 8.36 6.723
    100 39.9 32.66 8.12 5.87
    215 39.66 35.78 7.812 5.556
    464 18.27 14.12 6.437 5.082
   1000 14.56 12.79 5.769 4.491

And then PoomaII Array<...> class was substituted (to avoid name clashes
not added but substituted) by Blitz Array<...> class, e.g. Blitz Array<...>
was ported into PoomaII Benchmark class framework and built with the same
switches.

Here are the results:

./atest Benchmark
-----------------
Running C w/o restrict Implementation:
  N = 10...
    Correctness test value for N = 10 is 110.
  N = 21...
    Correctness test value for N = 21 is 231.
  N = 46...
    Correctness test value for N = 46 is 506.
  N = 100...
    Correctness test value for N = 100 is 1100.
  N = 215...
    Correctness test value for N = 215 is 2365.
  N = 464...
    Correctness test value for N = 464 is 5104.
  N = 1000...
    Correctness test value for N = 1000 is 11000.
Running C w/ restrict Implementation:
  N = 10...
    Correctness test value for N = 10 is 110.
  N = 21...
    Correctness test value for N = 21 is 231.
  N = 46...
    Correctness test value for N = 46 is 506.
  N = 100...
    Correctness test value for N = 100 is 1100.
  N = 215...
    Correctness test value for N = 215 is 2365.
  N = 464...
    Correctness test value for N = 464 is 5104.
  N = 1000...
    Correctness test value for N = 1000 is 11000.
Running Blitz Implementation:
  N = 10...
    Correctness test value for N = 10 is 110.
  N = 21...
    Correctness test value for N = 21 is 231.
  N = 46...
    Correctness test value for N = 46 is 506.
  N = 100...
    Correctness test value for N = 100 is 1100.
  N = 215...
    Correctness test value for N = 215 is 2365.
  N = 464...
    Correctness test value for N = 464 is 5104.
  N = 1000...
    Correctness test value for N = 1000 is 11000.
              C C
N w/o restrict w/ restrict Blitz
     10 37.45 56.24 30.39
     21 44.45 50.24 42.24
     46 30.21 35.47 31.65
    100 34.14 33.64 34.22
    215 38.6 35.82 41.23
    464 15.3 16.41 17.69
   1000 15.19 15.34 13.85

What do you think about this?
Best regards.

Alexander.

--------------------- blitz-dev list --------------------------------
* To subscribe/unsubscribe: mail to majordomo@oonumerics.org, with
"subscribe blitz-dev" or "unsubscribe blitz-dev" in the body of the message
* Blitz++ web page: http://oonumerics.org/blitz/



This archive was generated by hypermail 2b29 : Wed Feb 20 2002 - 04:30:08 EST