Ma question: Comment puis-je obtenir Python pour utiliser ma propre version OpenBLAS compilée?
Le Theano guide d'installation suggère que l'on devrait tester que les composants de la bibliothèque BLAS associés sont correctement optimisés via ces commandes:
THEANO_FLAGS=floatX=float32,device=cpu python `python -c "import os, theano; print os.path.dirname(theano.__file__)"`/misc/check_blas.py
THEANO_FLAGS=floatX=float32,device=gpu python `python -c "import os, theano; print os.path.dirname(theano.__file__)"`/misc/check_blas.py
Les résultats sont:
Carte: GTX 770
Résultats sur CPU 0.62s et GPU 0.11s
Je ne sais pas si ces résultats étaient bons, j'ai décidé de comparer différentes bibliothèques comme dans ce post . Le calcul scientifique nécessitant toutes les accélérations possibles, cela semblait être une bonne idée.
Afin de tester la dernière version, j'ai:
git clone https://github.com/xianyi/OpenBLAS.git
make TARGET=HASWELL
(le TARGET n'est pas vraiment nécessaire car il le détecte automatiquement)make PREFIX=/opt/OpenBLAS install
./usr/lib/openblas-haswell_cstm/
Sudo update-alternatives --install /usr/lib/libblas.so.3 libblas.so.3 /usr/lib/openblas-haswell_cstm/libopenblas.so.0 30
Malheureusement, cela donne une erreur:
$ Sudo update-alternatives --config libblas.so.3
There are 4 choices for the alternative libblas.so.3 (providing /usr/lib/libblas.so.3).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/openblas-base/libblas.so.3 40 auto mode
* 1 /usr/lib/atlas-base/atlas/libblas.so.3 35 manual mode
2 /usr/lib/libblas/libblas.so.3 10 manual mode
3 /usr/lib/openblas-base/libblas.so.3 40 manual mode
4 /usr/lib/openblas-haswell_cstm/libopenblas.so.0 30 manual mode
Press enter to keep the current choice[*], or type selection number: 4
update-alternatives: using /usr/lib/openblas-haswell_cstm/libopenblas.so.0 to provide /usr/lib/libblas.so.3 (libblas.so.3) in manual mode
max@MaxLin:~/tutorials$ python
Python 2.7.8 (default, Oct 20 2014, 15:05:19)
[GCC 4.9.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/numpy/__init__.py", line 153, in <module>
from . import add_newdocs
File "/usr/lib/python2.7/dist-packages/numpy/add_newdocs.py", line 13, in <module>
from numpy.lib import add_newdoc
File "/usr/lib/python2.7/dist-packages/numpy/lib/__init__.py", line 18, in <module>
from .polynomial import *
File "/usr/lib/python2.7/dist-packages/numpy/lib/polynomial.py", line 19, in <module>
from numpy.linalg import eigvals, lstsq, inv
File "/usr/lib/python2.7/dist-packages/numpy/linalg/__init__.py", line 50, in <module>
from .linalg import *
File "/usr/lib/python2.7/dist-packages/numpy/linalg/linalg.py", line 29, in <module>
from numpy.linalg import lapack_lite, _umath_linalg
ImportError: /usr/lib/liblapack.so.3: undefined symbol: gotoblas
Je ne sais pas si cela a à voir avec la version compilée n'étant pas une version . So. . J'ai essayé d'utiliser le libopenblas_haswellp-r0.2.14.so et le libopenblas.so créé par le make
mais cela n'a aucun effet sur l'erreur.
si vous voulez construire un paquet Debian personnalisé, je vous recommande de commencer par le paquet openblas
existant et Comment télécharger, modifier, construire et installer un paquet source Debian? .
Vous pouvez modifier le nom du package et les noms des fichiers de bibliothèque, si vous pensez que votre package ne remplace pas complètement celui fourni.