2014-04-27 15 views
6

Buduję numpy ze źródła w CentOS 6.5 bez dostępu do roota (python -V = 2.7.6). Mam najnowszy numpy źródło z git. Nie mogę na całe życie stać się numpy, by uznać biblioteki atlasowe. Mam:Prawidłowy sposób wskazywania bibliotek ATLAS/BLAS/LAPACK dla numpy kompilacji?

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 

Nie wiem nic o tym, jak te libs doszło wiem, ale mogę tylko przypuszczać, że atlas buduje byłoby szybciej niż jakikolwiek standardowy BLAS/LAPACK buduje mogłem zrobić.

Jaki jest prawidłowy sposób wskazywania numpy do tych bibliotek? Czy I export ATLAS, BLAS, LAPACK=... ustawia każdą odpowiadającą ścieżkę? czy mogę edytować plik site.cfg aby zawierał coś takiego:

[default] 
library_dirs = /usr/lib64/atlas 

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

próbowałem tylko o każdą odmianę wyżej i za każdym razem biegnę python setup.py config Mówi mi, każda biblioteka nie może znajdować się w ścieżkach określić oraz kilka innych domyślnych ścieżek wyszukiwania. Wkleiłem wyniki działania python setup.py config z site.cfg jak wyżej i tutaj nie ustawiono zmiennych środowiskowych: http://pastebin.com/EL9CfaR7. Każda pomoc jest doceniana.

Odpowiedz

7

OK, to było całkiem proste i zasadniczo zgodne z wytycznymi dotyczącymi instalacji. Przypuszczam, że jest to raczej pytanie dotyczące numeracji po współdzielonych bibliotekach niż o numpy czy atlas. W każdym razie, po prostu musiałem stworzyć kilka dowiązania:

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

następnie usuwa wszystkie pliki konfiguracyjne w site.cfg i aktualizowane mój .bashrc:

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

Po uruchomieniu python setup.py install, jestem dobry:

>>> 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'} 
+0

To wydaje się bardzo skomplikowane. Czy wypróbowałeś zamiast tego virtualenv? Możesz mieć pełen stos Pythona w swoim folderze domowym, więc nie potrzebujesz dostępu do roota. A potem możesz użyć pip na wszystko. – Davidmh

+0

Nie jestem zaznajomiony z virtualenv, ale od spojrzenia na to, nie jestem pewien, czy to byłoby przydatne. Mam już (dobrze HAD - jestem uruchomiony na kilka innych problemów) zainstalowany python/numpy/scipy. Nie próbuję instalować wielu wersji numpy - wystarczy powiedzieć jednej wersji, aby użyć konkretnej biblioteki atlasów, która była (jak zakładam) zoptymalizowana dla architektury, w której działam. –

+0

(tak, wiem, że to jest stare) Potrzebujesz pakietu -devel. ponieważ nie masz konta root, nie możesz go zainstalować, ale powinieneś poprosić o to swojego administratora. Pakiet -devel ma nagłówki i symbol .so –

Powiązane problemy