On Tue, 17 Jul 2007, Joe Landman wrote:

(The functions are borrowed from the library provided by "Numerical Recipes in C++")
I'm currently calling these functions from the main loop with the lines:

ah.... that explains it...

Um, "borrowed"?  You'd better watch out for the DMCA Police -- they'll
be knocking at your door.  They'll announce themselves after kicking
through the lock with "Buddy, you got a license for that?"

Numerical Recipes is not, actually, terribly well thought of by Real
Computer Scientists.  It wasn't written by real computer scientists, for
one thing.  Its algorithms are in at least some cases stale.  It is not
at all clear that the code in it is original, but nevertheless it is
copyrighted and the licensing is QUITE restrictive, prohibiting pretty
much any sort of use that you might care to think of unless you pay them
More Money.  Finally, there significantly faster and better
alternatives, especially for linear algebra.

See:

   http://math.jpl.nasa.gov/nr/

(this is one of the original rants against NR, and is quite incisive).
Also:

  http://en.wikipedia.org/wiki/Numerical_Recipes

which summarizes the main criticism of the book both ways.  Note that I
personally am not a mindless anti-NR ranter.  I actually have some of
the early versions of the book with much more liberal licensing, and can
use at least THAT code legally pretty freely even moving it around and
putting it on multiple systems in electronic source format.

However, the right thing to do now is to use the Gnu Scientific Library
(GSL).  Better code, aggressively open source (as in GPL v2 full
viral!).  Or rather, DON't use it unless you are prepared to make your
application GPL v2 as well.  Noting well that if you're trying to write
a closed source application that includes stolen source code from a
copyrighted library with restrictive licensing that way will get you
into even MORE trouble...;-)

The GSL can be used with an ATLAS-tuned linear algebra BLAS and very
likely will run 2 or more times faster than NR linear algebra anyway.
The "or more" is pretty open, by the way.  Maybe as many as 10x faster
-- there are some pretty significant optimizations in ATLAS and the GSL
code.

   rgb

Is there a simple way to call these functions which will cause the cluster to distribute the load of operations? Currently, when I run the program with a 50x50 array on a single machine, it takes about 5 minutes to process a single iteration through the matrix division.

Huh?  What machine?  What compiler?  What options?

(more lack of coffee induced stupor here)

This should take well under 1 second. O(N**3) operations (50*50*50 = 0.125E+6 operations) on a 1 GFLOP machine ( 1E+9 FLOPS) should be achievable in well under 1 second (ball park of 0.125/1000 seconds times a constant)

Maybe I am missing something. This *should* be fast. Unless you are running on a Palm pilot or something like that ...

In octave, using an interpreted LU decomposition on a hilbert matrix

        h=hilb(50);
        a=time ; [l,u,p] = lu(h); b=time; b-a
        ans = 0.00063705

this is ball-park what I had estimated, within a constant factor (cough). This is an Opteron 242 with 4 GB ram, so it isn't a speed demon...

And octave code isn't speed demon code.  But yeah, one would expect to
be able to fit 50x50 = 2500 x 8 = 20Kbytes into L1, let alone L2.  Even
x50 you're still only 1 MB, and lots of systems can fit that into cache.
And of course linear algebra operations have LOTS of optimizations --
many CPU/compilers should be able to pipeline and perform more than one
operation per cycle.  So something is indeed very odd here, even for NR
code.

   rgb





--
Robert G. Brown                        http://www.phy.duke.edu/~rgb/
Duke University Dept. of Physics, Box 90305
Durham, N.C. 27708-0305
Phone: 1-919-660-2567  Fax: 919-660-2525     email:[EMAIL PROTECTED]


_______________________________________________
Beowulf mailing list, Beowulf@beowulf.org
To change your subscription (digest mode or unsubscribe) visit 
http://www.beowulf.org/mailman/listinfo/beowulf

Reply via email to