Die Methode numpy.show_config()
(oder numpy.__config__.show()
) gibt Informationen zur Verknüpfung aus, die zum Zeitpunkt der Erstellung erfasst wurden. Meine Ausgabe sieht so aus. Ich denke, es bedeutet, dass ich das BLAS / LAPACK verwende, das mit Mac OS geliefert wird.
>>> 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__
sollte es sich wirklich um eine öffentliche API handeln. Trotzdem gewinnst du diese Runde, Davost .lapack_opt_info
die gezeigt wird, bedeutet also, dass Numpy mit Lapack verbunden ist?numpy.show_config()
, was wahrscheinlich eine öffentliche API-Funktion ist, da keine Startunterstriche vorhanden sind . Aber es ist nicht online dokumentiert und hat keine Dokumentzeichenfolge, daher ist es keine Überraschung, dass es so schwer zu finden ist. Hoffentlich werden sie das beheben.Was Sie suchen, ist Folgendes: Systeminformationen
Ich habe numpy / scipy mit atlas zusammengestellt und kann dies überprüfen mit:
Weitere Befehle finden Sie in der Dokumentation.
quelle
sysinfo.get_info('atlas')
nichts für mich zurückgegeben, abersysinfo.get_info('blas')
zurückgegeben{'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']}
undsysinfo.get_info('lapack')
zurückgegeben{'language': 'f77', 'libraries': ['lapack', 'lapack'], 'library_dirs': ['/usr/lib']}
Was bedeutet das?Da die dynamisch geladenen Versionen verwendet werden, können Sie Folgendes tun:
wo
anyoftheCmodules.so
könnte zum Beispiel seinnumpy/core/_dotblas.so
, welche Links zulibblas.so
.quelle
numpy/core/_dotblas.so
? (siehe Kommentar unten Talonmies Antwort).so
Dateien darin sein. Suchen Sie einfach im NumPy-Verzeichnis (z. B. mitfind /path/to/numpy -name "*.so"
). Ein paar von denen (_dotblas.so
,lapack_lite.so
unter Ubuntu vorkompilierte ein, zum Beispiel) nutzt BLAS / LAPACK_dotblas.so
existiert nicht mehr in numpy v1.10 und neuer , aber Sie können die Verknüpfung vonmultiarray.so
stattdessen überprüfennumpy.__config__
Laufzeit auf das kanonische Objekt zugreifen . (Siehe Davosts ausgezeichnete Antwort .)Sie können das Link Loader-Abhängigkeitstool verwenden, um die C-Level-Hook-Komponenten Ihres Builds zu überprüfen und festzustellen, ob sie externe Abhängigkeiten von Ihren Blas und dem Lapack Ihrer Wahl aufweisen. Ich bin momentan nicht in der Nähe einer Linux-Box, aber auf einem OS X-Computer können Sie dies im Verzeichnis site-packages tun, in dem sich die Installationen befinden:
Ersetzen Sie
ldd
anstelleotool
eines Gnu / Linux-Systems und Sie sollten die Antworten erhalten, die Sie benötigen.quelle
numpy/core/_dotblas.so
? (siehe Kommentar unter Ricardos Antwort)_dotblas.so
Interface-Wrapper für alle Blas geben, die zum Erstellen der Distribution verwendet wurden. Unter Windows wird es aufgerufen_dotblas.pyd
, aber die Funktion ist dieselbe._dotblas.so
es nur erstellt wird, wenn Sie einen[atlas]
Abschnitt insite.cfg
(und eine CBLAS-fähige BLAS-Bibliothek) verwenden. Sie sollten dies also verwenden, auch wenn Sie ATLAS nicht verwenden (außer wenn Sie Intel MKL verwenden, das über einen eigenen Abschnitt verfügt)._dotblas.so
existiert nicht mehr in numpy v1.10 und neuer , aber Sie können die Verknüpfung vonmultiarray.so
stattdessen überprüfenSie können die BLAS-, LAPACK- und MKL-Verknüpfung anzeigen mit
show_config()
:Was für mich Ausgabe gibt:
quelle
('HAVE_CBLAS', None)]
?HAVE_CBLAS
definiert wird, aber keinen Wert hat (denken Sie an C :)#define HAVE_CBLAS
. Es wird kein Wert benötigt, da es nur als Flag verwendet wird. Ich würde es als interpretierenHAVE_CBLAS=True
. Wenn Sie kein CBLAS hätten, hätten Sie das Tupel dort überhaupt nicht.Wenn Sie anaconda-navigator installiert haben (unter www.anaconda.com/anaconda/install/ für Linux, Windows oder macOS), werden blas, scipy und numpy installiert und Sie können sie anzeigen, indem Sie auf die Registerkarte Umgebungen auf der linken Seite der Navigator-Startseite klicken Seite (suchen Sie nach jedem Verzeichnis in Alpha-Reihenfolge). Durch die Installation der vollständigen Anaconda (im Gegensatz zu Miniconda oder einzelnen Paketen) werden viele der für die Datenwissenschaft erforderlichen wesentlichen Pakete installiert.
quelle