2014-04-27 11 views
6

CentOS 6.5의 소스에서 numpy를 루트 액세스없이 빌드합니다 (Python -V = 2.7.6). git에서 최신 numpy 소스가 있습니다. 나는 내 삶이 아틀라스 라이브러리를 인정하지 않을 수 없다.numpy 빌드를 위해 ATLAS/BLAS/LAPACK 라이브러리를 가리키는 올바른 방법은 무엇입니까?

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 

나는이 libs와에 대한 온 방법에 대해 아무것도 몰라,하지만 난 단지 아틀라스는 표준 BLAS/LAPACK 내가 만들 수있는 빌드보다 빠르게 될 빌드 있다고 가정 할 수 있습니다 : 나는있다.

이러한 라이브러리에 numpy를 지정하는 올바른 방법은 무엇입니까? export ATLAS, BLAS, LAPACK=...을 각각 해당 경로로 설정합니까? 각 라이브러리는 사용자가 지정한 경로에서 찾을 수 없습니다 그것은 나에게 말한다 내가 python setup.py config를 실행 내가 위의 거의 모든 변화를 시도했습니다

[default] 
library_dirs = /usr/lib64/atlas 

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

, 각 시간 : 또는 내가 좋아하는 뭔가를 포함 할 site.cfg 파일을 편집 할 다른 기본 검색 경로도 포함됩니다. 위 결과와 같이 python setup.py configsite.cfg으로 실행 한 결과를 붙여 넣었으며 여기에 환경 변수가 설정되지 않았습니다 : http://pastebin.com/EL9CfaR7. 어떤 도움을 주셔서 감사합니다.

답변

7

좋습니다. 이것은 매우 간단하고 본질적으로 설치 가이드 라인을 정확히 따릅니다. 이것은 numpy 나 atlas보다 libs 공유 후의 번호에 더 많은 질문이라고 생각합니다. 어쨌든, 난 그냥 심볼릭 링크를 생성했다 :

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

는 그 다음 site.cfg의 모든 CONFIGS을 제거하고 업데이트를 내 .bashrc :

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

python setup.py install를 실행 한 후, 난 괜찮아 :

>>> 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

이것은 매우 복잡해 보입니다. 대신 virtualenv를 사용해 보셨습니까? 전체 파이썬 스택을 홈 폴더에 넣을 수 있기 때문에 루트 액세스가 필요 없습니다. 그리고 나서 모든 것을 위해 pip를 사용할 수 있습니다. – Davidmh

+0

저는 virtualenv에 익숙하지 않습니다. 그러나 그것이 유용 할 지 모르겠습니다. 나는 이미 (다른 문제를 다루고있다.) python/numpy/scipy가 로컬에 설치되어있다. 나는 여러 버전의 numpy를 설치하려고하지 않고있다. 단지 하나의 버전에 내가 실행중인 아키텍처에 최적화 된 (특정 가정의) 특정 atlas 라이브러리를 사용한다고 말하고있다. –

+0

(예, 이것이 오래된 것을 알고 있습니다) -devel 패키지가 필요합니다. 루트 권한이 없기 때문에 설치할 수는 없지만 관리자에게 요청해야합니다. -devel 패키지에는 헤더와 .so 기호 링크가 있습니다. –