Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Correct way to point to ATLAS/BLAS/LAPACK libraries for numpy build?

I'm building numpy from source on CentOS 6.5 with no root access (python -V=2.7.6). I have the latest numpy source from git. I cannot for the life of me get numpy to acknowledge atlas libs. I have:

ls -1 /usr/lib64/atlas

libatlas.so.3
libatlas.so.3.0
libcblas.so.3
libcblas.so.3.0
libclapack.so.3
libclapack.so.3.0
libf77blas.so.3
libf77blas.so.3.0
liblapack.so.3
liblapack.so.3.0
libptcblas.so.3
libptcblas.so.3.0
libptf77blas.so.3
libptf77blas.so.3.0

I don't know anything about how these libs came about, but I can only assume that the atlas builds would be faster than any standard BLAS/LAPACK builds I could make.

What is the correct way to point numpy to these libraries? Do I export ATLAS, BLAS, LAPACK=... setting each to its corresponding path? or do I edit a site.cfg file to contain something like:

[default]
library_dirs = /usr/lib64/atlas

[atlas]
library_dirs = /usr/lib64/atlas
atlas_libs = lapack, cblas, f77blas, atlas

I've tried just about every variation of the above, and each time I run python setup.py config it tells me each library cannot be found in the paths I specify as well as a bunch of other default search paths. I've pasted the results of running python setup.py config with the site.cfg as above and no environment variables set here: http://pastebin.com/EL9CfaR7. Any help is appreciated.

like image 517
Matt Hancock Avatar asked Apr 27 '14 15:04

Matt Hancock


People also ask

Where do you put LAPACK?

lib and liblapack. Add the the BLAS and LAPACK libraries to the Visual Studio project settings, under Linker -> General -> Additional Library Directories: the directory where your liblapack.

Does Numpy use LAPACK?

NumPy searches for optimized linear algebra libraries such as BLAS and LAPACK. There are specific orders for searching these libraries, as described below and in the site.

Does LAPACK use BLAS?

LAPACK relies on an underlying BLAS implementation to provide efficient and portable computational building blocks for its routines. LAPACK was designed as the successor to the linear equations and linear least-squares routines of LINPACK and the eigenvalue routines of EISPACK.

What is the difference between BLAS and LAPACK?

BLAS (Basic Linear Algebra Subprograms) is a library of vector, vector-vector, matrix-vector and matrix-matrix operations. LAPACK, a library of dense and banded matrix linear algebra routines such as solving linear systems, the eigenvalue- and singular value decomposition.


1 Answers

Ok this was pretty simple and essentially follows the install guidelines exactly. I suppose this is more of a question on the numberings after shared libs than about numpy or atlas. Anyway, I just had to create some symlinks:

ln -s /usr/lib64/atlas/___.so.3.0 $HOME/local/lib/___.so

Then removed all configs in the site.cfg and updated my .bashrc:

export ATLAS=$HOME/local/lib/libatlas.so
export BLAS=$HOME/local/lib/libptf77blas.so
export LAPACK=$HOME/local/lib/liblapack.so

After running python setup.py install, I'm good:

>>> import numpy.distutils.system_info as si
>>> si.get_info('atlas')
    ATLAS version 3.8.4 built by mockbuild on Wed Mar 21 01:43:44 GMT 2012:
   UNAME    : Linux c6b6.bsys.dev.centos.org 2.6.32-44.2.el6.x86_64 #1 SMP Wed Jul 21 12:48:32 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
   INSTFLG  : -1 0 -a 1
   ARCHDEFS : -DATL_OS_Linux -DATL_ARCH_PII -DATL_CPUMHZ=2261 -DATL_SSE2 -DATL_SSE1 -DATL_USE64BITS -DATL_GAS_x8664
   F2CDEFS  : -DAdd_ -DF77_INTEGER=int -DStringSunStyle
   CACHEEDGE: 163840
   F77      : gfortran, version GNU Fortran (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
   F77FLAGS : -fomit-frame-pointer -mfpmath=387 -O2 -falign-loops=4 -g -Wa,--noexecstack -fPIC -m64
   SMC      : gcc, version gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
   SMCFLAGS : -fomit-frame-pointer -mfpmath=387 -O2 -falign-loops=4 -g -Wa,--noexecstack -fPIC -m64
   SKC      : gcc, version gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
   SKCFLAGS : -fomit-frame-pointer -mfpmath=387 -O2 -falign-loops=4 -g -Wa,--noexecstack -fPIC -m64
{'libraries': ['lapack', 'f77blas', 'cblas', 'atlas'], 'library_dirs': ['~/local/lib'], 'define_macros': [('ATLAS_INFO', '"\\"3.8.4\\""')], 'language': 'f77'}
like image 110
Matt Hancock Avatar answered Sep 19 '22 14:09

Matt Hancock