2015-03-13 1 views
2

J'essaie d'accélérer les opérations matricielles en utilisant NumPy dans Ubuntu 14.04 LTS (64 bits). Au lieu d'utiliser ATLAS (en fait quand j'utilise ATLAS, il n'y a qu'un seul thread qui tourne, avec 7 autres threads ouverts qui ne font rien, même si je spécifie OMP_NUM_THREADS=8 par exemple, je ne sais pas pourquoi), j'ai décidé de donner OpenBLAS un essai.Pas de _dotblas.so après l'installation de OpenBLAS et Numpy

J'ai passé des heures en suivant plusieurs tutoriels pour construire le code source de OpenBLAS et NumPy, par ex. [1], [2], [3], [4] et [5]. Cependant, aucun d'eux ne peut générer _dotblas.so après avoir compilé NumPy, qui est un fichier critique pour accélérer dot opération entre les matrices. Puis-je savoir si quelqu'un a construit avec succès NumPy et OpenBLAS sous Ubuntu 14.04? Si oui, pouvez-vous s'il vous plaît laissez-moi savoir comment faire?

Merci.


Mise à jour:

ci-dessous est essentiellement ce que je résume de ces cinq postes et essayé dans ma machine:

# OpenBLAS 
git clone git://github.com/xianyi/OpenBLAS 
cd OpenBLAS 
make FC=gfortran 
sudo make PREFIX=/opt/OpenBLAS/ install 
cd .. 
# let the system know 
sudo sh -c 'echo "/opt/OpenBLAS/lib" > /etc/ld.so.conf.d/openblas.conf' 
sudo ldconfig 

# Numpy 
git clone https://github.com/numpy/numpy 
cd numpy 
vim site.cfg # and put the following content within #### in site.cfg 
#### 
[default] 
library_dirs = /opt/OpenBLAS/lib 
[atlas] 
atlas_libs = openblas 
library_dirs = /opt/OpenBLAS/lib 
[lapack] 
lapack_libs = openblas 
library_dirs = /opt/OpenBLAS/lib 
#### 
export BLAS=/opt/OpenBLAS/lib/libopenblas.a 
export LAPACK=/opt/OpenBLAS/lib/libopenblas.a 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/OpenBLAS/lib/ 
python setup.py build 
sudo python setup.py install 

MISE À JOUR: Le script ci-dessus a été testé fonctionne bien sur Ubuntu 12.04 et 14.04 64 bits.

Répondre

3

Pour ceux qui sont également aux prises avec la construction de NumPy avec OpenBLAS, le module _dotblas n'est plus disponible depuis NumPy 1.10.0, selon le Release Notes. Trouvé à partir de this post.

+0

Merci d'avoir soulevé cette question - J'ai ajouté un [nouveau script de test] (https://gist.github.com/alimuldal/eb0f4eea8af331b2a890) à [mon précédent guide] (http://stackoverflow.com/questions/11443302/compiling-numpy-avec-openblas-integration/14391693 # 14391693) pour compiler numpy contre OpenBLAS –

+0

@ali_m: Merci pour votre gentil guide! J'en ai beaucoup appris auparavant. En fait, dans votre guide, vous n'avez pas mis [atlas] 'et [lapack]' dans le fichier * site.cfg *, alors que d'autres l'ont fait (voir quelques liens dans mon article) en affirmant que ces deux sont importants. Pouvez-vous commenter si '[atlas]' et '[lapack]' sont vraiment nécessaires? – mintaka

+0

[ATLAS] (http://math-atlas.sourceforge.net/) est une implémentation BLAS alternative. Cette section de 'site.cfg' ne serait importante que si vous vouliez utiliser ATLAS au lieu de OpenBLAS (si vous incluez à la fois les sections [atlas]' et [openblas] ', alors je pense que numpy priorise la liaison avec OpenBLAS sur ATLAS, cela ne ferait aucune différence). La section '[lapack]' est également inutile si vous utilisez OpenBLAS, car [une construction par défaut] (https://github.com/xianyi/OpenBLAS/blob/develop/Makefile.rule#L75-L77) de OpenBLAS inclut également le contenu de [netlib-lapack] (http://www.netlib.org/lapack/). –