[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: Wed, 9 Feb 2000 15:36:10 -0500

>For linking, the libraries are listed in the following order:
>  liboctinterp.a liboctave.a $(SPECIAL_MATH_LIB) libcruft.a

Ah, I missed this . . .

>However, one problem with just using
>  liboctave.a libatlas.a libcruft.a
>is that you may not pick up all of the BLAS from libatlas.a that might
>be used by libcruft.a, so really we need to omit all of the blas from
>libcruft if we are linking with ATLAS, and then use either

The same thing is true on a minor scale with LAPACK.  For instance, ATLAS
includes an ILAENV routine which has been hacked to return good blocking
parameters when you are using ATLAS as your blas.  This would also not be
linked in in the above scheme, but it is not that important of itself.
However, if ATLAS expands to some other low-level routines (for instance,
we are considering optimizing the reduction algorithms used by the
various eigencodes), it could become more important . . .

Ultimately, I think the most flexible setup would split lapack and blas out
of cruft, and allow for differing build processes.  However, I realize octave
is about a lot more than getting the maximal performance, and you need to
keep the libraries manageable.  Just getting the ATLAS blas should already
do wonders . . .

>  liboctave.a libatlas.a libcruft.a
>  liboctave.a libatlas.a libcruft.a libblas.a

Yeah, if you want to pull a trick like this, you could even have a file
that does something like 
  if (impossible condition)
     call all lapack & blas routines
in liboctave.a, and just use
  liboctave.a libatlas.a libcruft.a

I doubt many people would applaud the elegance, but it ought to work . . .
I pulled this beautiful trick in one of my past libraries; only problem
I had (I did not use dynamic linking) was I found I needed to make the
if such that the compiler didn't get rid of the code (some compilers
completely eliminated the condition if they could determine at compile-
time it was never taken) . . .

As far as ATLAS goes, the build is fairly flexible.  If you wind up wanting
ATLAS in one file, or split into lapack & blas, etc., I am happy to put
some BUILDING ATLAS FOR OCTAVE instructions in the ATLAS errata file for this
release, and on the next release, either building ATLAS that way by default
(assuming it doesn't step on the toes of our plans), including it as a
standard option in the build process, or at minimum providing instructions
with the tarfile . . .


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]