2014-04-27 18 views
6

Sto costruendo numpy dal sorgente su CentOS 6.5 senza accesso root (python -V = 2.7.6). Ho l'ultima fonte numpy da git. Non posso per la vita di me diventare numpy per riconoscere le librerie dell'Atlante. Ho:Modo corretto per puntare alle librerie ATLAS/BLAS/LAPACK per la generazione numpy?

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 

Io non so nulla di come queste librerie è venuto su, ma posso solo supporre che l'atlante costruisce sarebbe più veloce di qualsiasi BLAS/LAPACK principio muove ho potuto fare.

Qual è il modo corretto per indicare numpy a queste librerie? Devo impostare export ATLAS, BLAS, LAPACK=... nel suo percorso corrispondente? o posso modificare un file site.cfg per contenere qualcosa come:

[default] 
library_dirs = /usr/lib64/atlas 

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

Ho provato quasi ogni variazione di quanto sopra, e ogni volta che corro python setup.py config mi dice ogni libreria non può essere trovato nei percorsi che specificano così come una serie di altri percorsi di ricerca predefiniti. Ho incollato i risultati dell'esecuzione di python setup.py config con site.cfg come sopra e nessuna variabile di ambiente impostata qui: http://pastebin.com/EL9CfaR7. Qualsiasi aiuto è apprezzato.

risposta

7

Ok questo è stato abbastanza semplice e sostanzialmente segue esattamente le linee guida per l'installazione. Suppongo che questa sia più una domanda sulla numerazione dopo le librerie condivise che su numpy o atlante. In ogni caso, ho dovuto creare dei link simbolici:

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

poi rimosso tutte le configurazioni del site.cfg e aggiornato il mio .bashrc:

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

Dopo l'esecuzione python setup.py install, sto bene:

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

Questo sembra terribilmente complicato. Hai provato invece un virtualenv? Puoi avere il tuo intero stack Python nella tua cartella home, quindi non c'è bisogno di un accesso root per niente. E poi puoi usare pip per tutto. – Davidmh

+0

Non ho familiarità con virtualenv, ma dal guardarlo, non sono sicuro se sarebbe utile. Ho già (beh, HAD - sto correndo su altri problemi) python/numpy/scipy installato localmente. Non sto tentando di installare più versioni di numpy - solo dicendo alla prima versione di utilizzare una particolare libreria di atlanti che era (presumo) ottimizzata per l'architettura su cui sto lavorando. –

+0

(sì, lo so che è vecchio) È necessario il pacchetto -devel. dal momento che non hai root, non puoi installarlo, ma dovresti chiedere all'amministratore di farlo. Il pacchetto -devel ha intestazioni e il collegamento simbolico .so –