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.
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.
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.
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.
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.
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'}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With