La méthode numpy.show_config()
(ou numpy.__config__.show()
) génère des informations sur la liaison collectées au moment de la construction. Ma sortie ressemble à ceci. Je pense que cela signifie que j'utilise le BLAS / LAPACK fourni avec Mac OS.
>>> import numpy as np
>>> np.show_config()
lapack_opt_info:
extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
extra_compile_args = ['-msse3']
define_macros = [('NO_ATLAS_INFO', 3)]
blas_opt_info:
extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
extra_compile_args = ['-msse3', '-I/System/Library/Frameworks/vecLib.framework/Headers']
define_macros = [('NO_ATLAS_INFO', 3)]
numpy.__config__
devrait vraiment être une API publique. Néanmoins, vous gagnez ce tour, davost .lapack_opt_info
soit montré signifie que numpy est lié à lapack?numpy.show_config()
, qui est probablement une fonction API publique en raison de l'absence de traits de soulignement de départ. Mais il n'est pas documenté en ligne et n'a pas de docstring, il n'est donc pas surprenant qu'il soit si difficile à trouver. J'espère qu'ils vont résoudre ce problème.Voici ce que vous recherchez: informations système
J'ai compilé numpy / scipy avec atlas et je peux le vérifier avec:
Consultez la documentation pour plus de commandes.
la source
sysinfo.get_info('atlas')
n'a rien retourné pour moi maissysinfo.get_info('blas')
est revenu{'include_dirs': ['/usr/local/include', '/usr/include', '/opt/local/include', '/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/include'], 'libraries': ['blas', 'blas'], 'library_dirs': ['/usr/lib']}
etsysinfo.get_info('lapack')
est revenu{'language': 'f77', 'libraries': ['lapack', 'lapack'], 'library_dirs': ['/usr/lib']}
Qu'est-ce que cela signifie?Comme il utilise les versions chargées dynamiquement, vous pouvez simplement faire ceci:
où
anyoftheCmodules.so
pourrait être, par exemplenumpy/core/_dotblas.so
, vers quel lienlibblas.so
.la source
numpy/core/_dotblas.so
? (voir le commentaire ci-dessous la réponse de talonmies).so
fichiers là-dedans. Recherchez simplement dans le répertoire NumPy (par exemple, en utilisantfind /path/to/numpy -name "*.so"
). Quelques-uns d'entre eux (_dotblas.so
,lapack_lite.so
sous celui précompilé d'Ubuntu, par exemple) utilisent BLAS / LAPACK_dotblas.so
n'existe plus dans numpy v1.10 et plus récent , mais vous pouvez vérifier le lien de à lamultiarray.so
placenumpy.__config__
objet canonique au moment de l'exécution. (Voir l'excellente réponse de davost .)Vous pouvez utiliser l'outil de dépendance du chargeur de lien pour examiner les composants hook de niveau C de votre build et voir s'ils ont des dépendances externes sur votre blas et lapack de votre choix. Je ne suis pas près d'une boîte Linux pour le moment, mais sur une machine OS X, vous pouvez le faire dans le répertoire site-packages qui contient les installations:
remplacez
ldd
-otool
le par un système gnu / Linux et vous devriez obtenir les réponses dont vous avez besoin.la source
numpy/core/_dotblas.so
? (voir le commentaire ci-dessous la réponse de Ricardos)_dotblas.so
qui est le wrapper d'interface de tout ce qui a été utilisé pour construire la distribution. Sous Windows, il sera appelé_dotblas.pyd
, mais la fonction est la même._dotblas.so
ne soit construit que si vous utilisez une[atlas]
section danssite.cfg
(et une bibliothèque BLAS compatible CBLAS). Donc, vous devriez l'utiliser, même si vous n'utilisez pas ATLAS (sauf lorsque vous utilisez Intel MKL, qui a une section dédiée)._dotblas.so
n'existe plus dans numpy v1.10 et plus récent , mais vous pouvez vérifier le lien de à lamultiarray.so
placeVous pouvez afficher la liaison BLAS, LAPACK, MKL en utilisant
show_config()
:Ce qui pour moi donne une sortie:
la source
('HAVE_CBLAS', None)]
?HAVE_CBLAS
est défini mais n'a aucune valeur (pensez à C :)#define HAVE_CBLAS
. Il n'a pas besoin de valeur car il n'est utilisé que comme indicateur. Je l'interpréterais commeHAVE_CBLAS=True
. Si vous n'aviez pas CBLAS, vous n'y auriez pas du tout le tuple.Si vous avez installé anaconda-navigator (sur www.anaconda.com/anaconda/install/ pour linux, Windows ou macOS) - blas, scipy et numpy seront tous installés et vous pouvez les voir en cliquant sur l'onglet environnements sur le côté gauche de la page d'accueil du navigateur page (recherchez chaque répertoire dans l'ordre alpha). L'installation complète d'anaconda (par opposition à miniconda ou à des packages individuels) prendra en charge l'installation de nombreux packages essentiels nécessaires à la science des données.
la source