[Numpy-discussion] building numpy with atlas on ubuntu edgy
David Cournapeau
david@ar.media.kyoto-u.ac...
Wed Apr 18 22:03:44 CDT 2007
Charles R Harris wrote:
>
>
> On 4/18/07, *Keith Goodman* <kwgoodman@gmail.com
> <mailto:kwgoodman@gmail.com>> wrote:
>
> On 4/18/07, Charles R Harris <charlesr.harris@gmail.com
> <mailto:charlesr.harris@gmail.com>> wrote:
> > On 4/18/07, Keith Goodman <kwgoodman@gmail.com
> <mailto:kwgoodman@gmail.com>> wrote:
> > > I'd like to compile atlas so that I can take full advantage of
> my core
> > > 2 duo. Numpy dynamically links to the debian binary of
> atlas-sse that
> > > I installed. But the atlas website says that they recommend
> static
> > > linking.
> > >
> > > Which do you recommend, static or dynamic? Are there good
> directions for
> > either?
> >
> > I don't know which is best, although I suspect the statically
> linked version
> > will be larger. It might seem that just pulling in the gemm routines
> > wouldn't add much, but they pull in lots of supporting routines.
> To get
> > numpy to link statically you will also probably need to have a
> directory
> > that contains only the *.a versions because the linker will
> default to the
> > *.so if they are present; i don't think there is a way to
> specify the
> > -static flag to the gcc compiler. Maybe someone else knows how
> to do that.
> > For ATLAS, I believe the latest versions are also recommended
> because the
> > stable version is so old.
>
> At the moment best is equal to easiest since I have never compiled
> atlas. Does anyone know of a howto on compiling atlas (dynamically
> linked)?
>
>
> The instructions that come with ATLAS are useable, and with the 3.7.30
> version the process is pretty easy. Just make sure you read the part
> concerning relocatable libraries first, as you will need to add some
> flags to the ./configure command line, -fPIC and a couple of others.
> After compiling and install, IIRC, the libraries will be in
> /usr/local/lib/ATLAS, which should be OK for debian. Then you need to
> add a file in /etc/ld.conf.d with the name of the directory and run
> ldconfig in order to let the system know where the libraries are and
> what they contain. Or you could save the old /usr/lib/atlas directory
> and put the new libraries there and then run ldconfig. I also found it
> necessary to delete the old numpy site-package before reinstalling numpy.
Here is what I do to compile atlas with full lapack, dynamically, on
debian systems (ubuntu is the same for that matter):
- sudo apt-get install g77 lapack3-pic lapack3-test refblas3-test
- untar atlas, go into ATLAS directory
- mkdir MyObj, cd MyObj (this is where the lib will be built)
- configure the build: ../configure -Si archdef 1 -Fa alg -fPIC -C
if g77 -Ss flapack /usr/lib/liblapack_pic.a
- build the lib: make
- time and test the library: make time; make test
- build the shared library: cd lib; make shared.
Explanations:
- lapack3-test will be handy to test the compiled atlas, and
lapack3-pic gives you a lapack library which can be used to build a full
shared LAPACK library using atlas.
- archdef 1 means uses arch default, much faster - up to 10 times -
to compile the library
- -Fa alg -fPIC says to add -fPIC to build all objects files (needed
for shared lib)
- -C if g77 says to use g77 and not gfortran as the fortran
compiler. On debian, g77 is still the default, and gfortran has a
different ABI, meaning all kind of problems if you use gfortran for now
on debian if you do not know what you are doing.
I strongly advise you to use the officiel lapack and blas testers
afterwards. On debian, as they are dynamically linked to blas/lapack,
you can choose which library to test thanks to the LD_LIBRARY_PATH trick.
cheers,
David
More information about the Numpy-discussion
mailing list