[SciPy-user] scipy, blas, lapack, atlas and debian/ubuntu

Cournapeau David cournape at atr.jp
Sun Mar 5 19:29:56 CST 2006


	I am using scipy for some time at work on my linux (x86 box), and it
works fine; I am in general really happy about it as a matlab
replacement. Recently, I tried to install the whole thing
numpy/scipy/matplotlib on my minimac (again, linux, but on a ppc
architecture), and I have some strange installation issues, which makes
me wondering about the following issues on scipy installation.
	First, the conditions on both machines: ubuntu breezy, atlas3 (altivec
or sse2 depending on the machine), numpy 0.9.5, scipy 0.4.6, matplotlib
0.87 ('stable' releases).

	- I am using ATLAS; to have a valid blas/lapack, I used the trick to
rebuild a static LAPACK library using ATLAS. But I noticed this weekend
that the liblapack.a included in the ubuntu ATLAS package is quite big
(around 7 Mb), and the size of the packaged ATLAS liblapack.a and the
one I am using are the same (by comparing the libraries, they have
different md5, but when extracting them using ar x, the content looks
like the same, ie same .o files). So I was wondering, does that mean the
atlas lapack is actually a full implementation (maybe done by the
debian/ubuntu packagers ?). Is there a way to be sure that a given
library implements full lapack ?
	- When building numpy, is there a way to actually know which
BLAS/LAPACK version is used ? For example, at work, on my x86 machine,
python setup.py config gives me the following message at the end (I
exported BLAS and LAPACK env variables to the location of the
corresponding static versions, at /usr/lib/atlas/sse2) :

Replacing _lib_names[0]=='lapack' with 'lapack'
Replacing _lib_names[0]=='lapack' with 'lapack'
    libraries = ['lapack']
    library_dirs = ['/usr/lib/atlas/sse2']
    language = f77

    libraries = ['f77blas', 'cblas', 'atlas', 'lapack']
    library_dirs = ['/usr/lib/sse2', '/usr/lib/atlas/sse2']
    define_macros = [('ATLAS_WITHOUT_LAPACK', None), ('ATLAS_INFO', '"\
    language = f77
    include_dirs = ['/usr/include']

I am not sure to understand the message: it seems like two lapack were
found, which one is taken ? 
	- Also, with BLAS/ LAPACK env variables, I select static libraries, but
it seems like shared libraries are used afterwards: how can I know which
is one is used ? I know how to do this kind of things with C programs
(trakcing which libraries are loaded at runtime), but with python, it
can quite hard to know which module uses which library.

	I hope I am not too unclear !,

More information about the SciPy-user mailing list