[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: Fri, 4 Feb 2000 20:50:39 -0500

>| Sounds good to me.
>Yes, I am also interested in this.  The last time I checked up on
>atlas, I thought it looked promising, but it was not really ready.
>But if it supports all of the level 1 and 2 blas plus some lapack
>calls, then it might be time to consider replacing what we can with
>atlas-generated code.

The complete BLAS are supported, both C and Fortran77 interfaces.  You don't
need a fortran compiler for anything other than the F77 interface routines.
C blas and lapack routines support row or column major . . .

ATLAS does not provide a complete lapack, and I truly doubt it ever will
(that is a big freakin package).  We just provide some routines we've scoped
out and been able to noticably improve.  The number of such routines will
undoubtedly continue to go up, but right now its fairly limited.  The LAPACK
routines presently provided are: ?GESV ?GETRF ?GETRS ?POSV ?POTRF ?POTRS and

>Octave uses the Fortran blas and lapack straight from netlib.  I think
>the only change is to modify xerbla so that it doesn't exit on errors.

Excellent.  Xerbla is a F77 interface routine; ATLAS uses the one directly
off of netlib, so that change will not require messing much with ATLAS . . .

>First, there are licensing issues.  If the tuned blas libraries are
>distributed under terms that are not compatible with the GPL, then
>we can't distribute a version of Octave that is linked with them.

>It is also easier for people to install Octave if the instructions are
>essentially `unpack a single tar file, then run configure and make',
>instead of `get several packages, try to figure out how to install the
>other packages (last I checked, the blas and lapack did not use
>configure) and then try to build Octave using them'.
>If atlas is distributed under terms that are compatible with the GPL
>(I think it was the last time I checked) then I think it could be the
>best solution for Octave, since there won't be any licensing problems,
>and it will not require tweaking the configure script for each new
>vendor blas.

ATLAS essentially uses the new BSD license (no advertising clause), so it
is compatible with GPL.

ATLAS does not use gnu configure, but it does have its own config routine
that automates the same sort of thing (ATLAS needs high performance flags,
and to look for particular compilers, so configure is not really aimed for

I think you are correct about distributing the BLAS and LAPACK with octave;
obviously few users are enthused with the idea of reading and installing
multiple packages.  One option is to keep the F77 BLAS as part of octave,
but provide instructions and mechanisms for the user to substitute ATLAS
(or indeed some other optimized library) easily.  The advantage here is
that you do not have to incorperate ATLAS into the package, and the user
who is uninterested in performance doesn't have to endure the install
(ATLAS takes around 15-30 min to install on a PII/PIII, for instance.  If
you install ATLAS on an architecture it has never seen before [ATLAS has
defaults for most architectures], the install time can get much worse).

Anyway, it is good to hear there is interest.  I'm not sure what to do next;
is someone interested in scoping ATLAS out and asking questions?  If you
download the package, one of the things we did this release is put the API
routines in their own directories to make this kind of thing easier.
has a "blas" and "lapack" subdirectories, both of which have a "C" and
"F77" where the appropriate interface routines sit.

My guess is that if you want to replace your current BLAS with ATLAS, we will
need quite a bit of back in forth to set it up.  Allowing ATLAS as a drop in
replacement would probably cut that down a bit . . .


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]