7

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.

1 Answer 1

8

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'}
Sign up to request clarification or add additional context in comments.

3 Comments

This seems awfully complicated. Have you tried a virtualenv instead? You can have your full Python stack in your home folder, so no need for root access for anything. And then you can use pip for everything.
I'm not familiar with virtualenv, but from glancing at it, I'm not sure if it'd be useful. I already have (well HAD--I'm running into some other issues) python/numpy/scipy installed locally. I'm not trying to install multiple versions of numpy - just telling the one version to use a particular atlas library that was (I'm assuming) optimized for the architecture I'm running on.
(yes, i know this is old) You need the -devel package. since you don't have root, you can't install it, but you should ask your admin to do so. The -devel package has headers and the .so symlink

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.