[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ATLAS and octave

From: R Clint Whaley
Subject: Re: ATLAS and octave
Date: Sat, 5 Feb 2000 06:45:56 -0500


As I was attempting to sleep, I realized I there might be a relatively
ease way to add ATLAS to octave.

All ATLAS internal routines begin with ATL_ (to avoid naming conflicts
with other libraries), and the rest of the defined routines are 
BLAS and LAPACK API routines.  This means, I think, that we can
put ATLAS into libcruft without too much problem.

The most direct method is, with a previously installed ATLAS, build 
octave's libcruft as normal, but you then ar into it the contents of:
   ATLAS/lib/<arch>/liblapack.a (overwriting some LAPACK routines)
   ATLAS/lib/<arch>/libatlas.a  (ATLAS internals)
   ATLAS/lib/<arch>/libf77blas.a (F77 BLAS interface -- overwrite BLAS)
   ATLAS/lib/<arch>/libcblas.a (C BLAS interface)

I have hacked up a quick version of this on my 600Mhz Athlon.  Everything
is not 100% I'm sure, but already I can see this:

Octave au natural:
octave:1>  A = rand(1000,1000); 
octave:2> t1 = time(); lu(A) ; t2 = time() - t1
t2 = 30.460
octave:4> B = rand(1000,1000);
octave:5> t1 = time() ; A * B ; t2 = time() - t1
t2 = 41.757

My hacked up octave/atlas:
octave:1> A = rand(1000,1000); 
octave:2> t1 = time(); lu(A) ; t2 = time() - t1
t2 = 5.1056
octave:7> B = rand(1000,1000);
octave:8> t1 = time() ; A * B ; t2 = time() - t1
t2 = 3.0831

So with trivial effort, we've got something running quite a bit faster.
All is not right with my hacked up octave, 'cause I'm not sure I got things
done in the right order.  I rather suspect I'm not using ATLAS's lapack
(I just hacked the libcruft/blas makefile and had it add all of atlas's
files).  I'm also not sure why I'm getting 324Mflop DGEMM on a platform
where `barebones' ATLAS DGEMM gets almost 700 . . .
However, the fact that the build succeeded tells me that ATLAS/octave are
playing together nicely . . .

Anyway, one easy approach is to formalize a process like this within the
octave framework.  Could be perhaps some kind of config option, or something.
If you are interested, I would be happy to supply the required
makefile / shell file / help needed  to shove the atlas stuff into
libcruft . . .

The cool think is that then ATLAS would not have to be incorperated into
octave, saving you from having to forward ATLAS queries on to us.  The
process for a normal octave remains the same.  For the high-octane version,
the user installs ATLAS first (sending mail to us if this doesn't work).
With the a good ATLAS install on the machine, you throw a configure option
in octave, and the faster stuff is built . . .

Anyway, the sun is about to come up, so it must be time for bed.  Let me
know what you think.


Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:
How to fund new projects:
Subscription information:

reply via email to

[Prev in Thread] Current Thread [Next in Thread]