Skipper, this looks like a problem that I had in the bad old days with ATLAS, as well. Try compiling openblas with the -fPIC flag that used to help.
Best of luck, Hanno hanno.kl...@me.com Sent from my mobile device, please excuse my brevity. On 23.03.2013, at 19:19, Skipper Seabold <jsseab...@gmail.com> wrote: > Some help on this would be greatly appreciated. It's been recommended to use > OpenBlas over ATLAS, so I've been trying to build numpy with openblas and > have run into a few problems. > > 1) Build fails using bento master and waf 1.7.9, see below. > 2) Distutils doesn't seem to be able to find lapack as part of atlas. I tried > to skip a site.cfg and define environmental variables. No idea what I missed. > > I followed instructions found scattered over the internet and only understand > vaguely the issues. Maybe someone can help. I'd be happy to update the wiki > with any answers. > > To truly support OpenBlas, is it maybe necessary to make some additions to > numpy/distutils/system_info.py? > > Thanks for having a look, > > Skipper > > Install OpenBlas > ----------------------------- > git clone git://github.com/xianyi/OpenBLAS > cd OpenBlas > > Edit c_check to look for libpthreads in the right place (Kubuntu 12.10) > > |4 $ git diff c_check > ``` > diff --git a/c_check b/c_check > index 4d82237..de0fd33 100644 > --- a/c_check > +++ b/c_check > @@ -241,7 +241,7 @@ print CONFFILE "#define FUNDERSCORE\t$need_fu\n" if > $need_fu > > if ($os eq "LINUX") { > > - @pthread = split(/\s+/, `nm /lib/libpthread.so* | grep _pthread_create`); > + @pthread = split(/\s+/, `nm /lib/x86_64-linux-gnu/libpthread.so* | grep > _pthread_create`); > > if ($pthread[2] ne "") { > print CONFFILE "#define PTHREAD_CREATE_FUNC $pthread[2]\n"; > ``` > > make fc=gfortran > make PREFIX=~/.local install > > Everything looks ok, so far. > > Install NumPy > --------------------------- > Using numpy master > > I tried to use bento master and waf 1.7.9, following instructions from > David's blog > > bentomaker configure --prefix=/home/skipper/.local > --with-blas-lapack-libdir=/home/skipper/.local/lib > --blas-lapack-type=openblas .. > bentomaker build -j4 > > ``` > <snip> > [101/104] cshlib: build/numpy/core/src/umath/umath_tests.c.11.o -> > build/numpy/core/umath_tests.so > > /usr/bin/ld: numpy/core/lib/libnpymath.a(halffloat.c.12.o): relocation > R_X86_64_PC32 against symbol `npy_halfbits_to_floatbits' can not be used when > making a shared object; recompile with -fPIC > /usr/bin/ld: final link failed: Bad value > collect2: error: ld returned 1 exit status > /usr/bin/ld: numpy/core/lib/libnpymath.a(halffloat.c.12.o): relocation > R_X86_64_PC32 against symbol `npy_halfbits_to_floatbits' can not be used when > making a shared object; recompile with -fPIC > /usr/bin/ld: final link failed: Bad value > collect2: error: ld returned 1 exit status > ``` > > No idea, so, let's try distutils > > export LAPACK=~/.local/lib/libopenblas.a > export BLAS=~/.local/lib/libopenblas.a > export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/.local/lib/ > echo $LD_LIBRARY_PATH > ``` > :/usr/local/lib64/R/bin:/home/skipper/.local/lib/ > ``` > > This step seems to be necessary? > > python setup.py config > ``` > Running from numpy source directory. > non-existing path in 'numpy/distutils': 'site.cfg' > F2PY Version 2 > numpy/core/setup_common.py:88: MismatchCAPIWarning: API mismatch detected, > the C API version numbers have to be updated. Current C api version is 8, > with checksum f4362353e2d72f889fda0128aa015037, but recorded checksum for C > API version 8 in codegen_dir/cversions.txt is > 17321775fc884de0b1eda478cd61c74b. If functions were added in the C API, you > have to update C_API_VERSION in numpy/core/setup_common.py. > MismatchCAPIWarning) > blas_opt_info: > blas_mkl_info: > libraries mkl,vml,guide not found in ['/usr/local/lib64', '/usr/local/lib', > '/usr/lib64', '/usr/lib', '/usr/lib/x86_64-linux-gnu'] > NOT AVAILABLE > > atlas_blas_threads_info: > Setting PTATLAS=ATLAS > libraries ptf77blas,ptcblas,atlas not found in ['/usr/local/lib64', > '/usr/local/lib', '/usr/lib64', '/usr/lib', '/usr/lib/x86_64-linux-gnu'] > NOT AVAILABLE > > atlas_blas_info: > libraries f77blas,cblas,atlas not found in ['/usr/local/lib64', > '/usr/local/lib', '/usr/lib64', '/usr/lib', '/usr/lib/x86_64-linux-gnu'] > NOT AVAILABLE > > /home/skipper/src/numpy-skipper/numpy/distutils/system_info.py:1501: > UserWarning: > Atlas (http://math-atlas.sourceforge.net/) libraries not found. > Directories to search for the libraries can be specified in the > numpy/distutils/site.cfg file (section [atlas]) or by setting > the ATLAS environment variable. > warnings.warn(AtlasNotFoundError.__doc__) > blas_info: > Replacing _lib_names[0]=='blas' with 'openblas' > Replacing _lib_names[0]=='openblas' with 'openblas' > FOUND: > libraries = ['openblas'] > library_dirs = ['/home/skipper/.local/lib'] > language = f77 > > FOUND: > libraries = ['openblas'] > library_dirs = ['/home/skipper/.local/lib'] > define_macros = [('NO_ATLAS_INFO', 1)] > language = f77 > > non-existing path in 'numpy/lib': 'benchmarks' > lapack_opt_info: > lapack_mkl_info: > mkl_info: > libraries mkl,vml,guide not found in ['/usr/local/lib64', '/usr/local/lib', > '/usr/lib64', '/usr/lib', '/usr/lib/x86_64-linux-gnu'] > NOT AVAILABLE > > NOT AVAILABLE > > atlas_threads_info: > Setting PTATLAS=ATLAS > libraries ptf77blas,ptcblas,atlas not found in /usr/local/lib64 > libraries lapack_atlas not found in /usr/local/lib64 > libraries ptf77blas,ptcblas,atlas not found in /usr/local/lib > libraries lapack_atlas not found in /usr/local/lib > libraries ptf77blas,ptcblas,atlas not found in /usr/lib64 > libraries lapack_atlas not found in /usr/lib64 > libraries ptf77blas,ptcblas,atlas not found in /usr/lib > libraries lapack_atlas not found in /usr/lib > libraries ptf77blas,ptcblas,atlas not found in /usr/lib/x86_64-linux-gnu > libraries lapack_atlas not found in /usr/lib/x86_64-linux-gnu > numpy.distutils.system_info.atlas_threads_info > NOT AVAILABLE > > atlas_info: > libraries f77blas,cblas,atlas not found in /usr/local/lib64 > libraries lapack_atlas not found in /usr/local/lib64 > libraries f77blas,cblas,atlas not found in /usr/local/lib > libraries lapack_atlas not found in /usr/local/lib > libraries f77blas,cblas,atlas not found in /usr/lib64 > libraries lapack_atlas not found in /usr/lib64 > libraries f77blas,cblas,atlas not found in /usr/lib > libraries lapack_atlas not found in /usr/lib > libraries f77blas,cblas,atlas not found in /usr/lib/x86_64-linux-gnu > libraries lapack_atlas not found in /usr/lib/x86_64-linux-gnu > numpy.distutils.system_info.atlas_info > NOT AVAILABLE > > /home/skipper/src/numpy-skipper/numpy/distutils/system_info.py:1415: > UserWarning: > Atlas (http://math-atlas.sourceforge.net/) libraries not found. > Directories to search for the libraries can be specified in the > numpy/distutils/site.cfg file (section [atlas]) or by setting > the ATLAS environment variable. > warnings.warn(AtlasNotFoundError.__doc__) > lapack_info: > Replacing _lib_names[0]=='lapack' with 'openblas' > Replacing _lib_names[0]=='openblas' with 'openblas' > FOUND: > libraries = ['openblas'] > library_dirs = ['/home/skipper/.local/lib'] > language = f77 > > FOUND: > libraries = ['openblas', 'openblas'] > library_dirs = ['/home/skipper/.local/lib'] > define_macros = [('NO_ATLAS_INFO', 1)] > language = f77 > > running config > ``` > > python setup.py build &> build.log > > Build log is here. Obviously it didn't go well, but I don't see anything to > indicate problems. Sometimes I am able to get _dotblas.so built, though I > don't know what causes it. This time I wasn't. > > https://gist.github.com/jseabold/7054ba9d85eae09eb402#file-numpy_build-log > > sudo python setup.py install &> install.log > > https://gist.github.com/jseabold/a0f5638b65d44aeff598#file-numpy_install-log > > >>> import numpy as np > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > File "/usr/local/lib/python2.7/dist-packages/numpy/__init__.py", line 138, > in <module> > import add_newdocs > File "/usr/local/lib/python2.7/dist-packages/numpy/add_newdocs.py", line > 13, in <module> > from numpy.lib import add_newdoc > File "/usr/local/lib/python2.7/dist-packages/numpy/lib/__init__.py", line > 15, in <module> > from polynomial import * > File "/usr/local/lib/python2.7/dist-packages/numpy/lib/polynomial.py", line > 19, in <module> > from numpy.linalg import eigvals, lstsq, inv > File "/usr/local/lib/python2.7/dist-packages/numpy/linalg/__init__.py", > line 50, in <module> > from linalg import * > File "/usr/local/lib/python2.7/dist-packages/numpy/linalg/linalg.py", line > 25, in <module> > from numpy.linalg import lapack_lite > ImportError: libopenblas.so.0: cannot open shared object file: No such file > or directory > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion