Ich benutze numpy und scipy in verschiedenen Umgebungen (MacOS, Ubuntu, RedHat). Normalerweise installiere ich numpy mit dem Paketmanager, der verfügbar ist (z. B. Mac-Ports, apt, yum).
Wenn Sie Numpy jedoch nicht manuell kompilieren, wie können Sie sicher sein, dass es eine BLAS-Bibliothek verwendet? Bei Verwendung von Mac-Ports wird ATLAS als Abhängigkeit installiert. Ich bin mir jedoch nicht sicher, ob es wirklich benutzt wird. Wenn ich einen einfachen Benchmark durchführe, benötigt die numpy.dot()
-Funktion ca. 2 Mal die Zeit als ein Skalarprodukt, das mit der Eigen C ++ - Bibliothek berechnet wird. Ich bin mir nicht sicher, ob dies ein vernünftiges Ergebnis ist.
Mit freundlichen Grüßen, Apo
numpy.show_config()
liefert nicht immer zuverlässige Informationen. Zum Beispiel, wenn ich apt-get install python-numpy
auf Ubuntu 14.04, sieht die Ausgabe von np.show_config()
wie folgt aus:
Es sieht so aus, als ob numpy die Standard-CBLAS-Bibliothek verwendet. Ich weiß jedoch, dass numpy OpenBLAS verwendet, das ich über das Paket libopenblas-dev
installiert habe.
Der beste Weg, um * nix zu überprüfen, ist ldd
, um herauszufinden, welche geteilt werden soll Bibliotheken numpy Links zur Laufzeit (Ich besitze keinen Mac, aber ich denke, dass Sie otool -L
anstelle von ldd
verwenden können).
Für Versionen von numpy älter als v1.10:
%Vor% Wenn _dotblas.so
nicht existiert, bedeutet dies wahrscheinlich, dass numpy keine BLAS-Bibliotheken gefunden hat, als es ursprünglich kompiliert wurde. In diesem Fall erstellt es einfach keine der BLAS-abhängigen Komponenten.
Für numpy v1.10 und neuer:
_dotblas.so
wurde entfernt , aber Sie können die Abhängigkeiten überprüfen von multiarray.so
stattdessen:
Betrachte die Version von numpy, die ich über apt-get
installiert habe:
/usr/lib/libblas.so.3
ist eigentlich der Anfang einer Kette von Symlinks. Wenn ich ihnen mithilfe von readlink -e
bis zu ihrem endgültigen Ziel folge, sehe ich, dass sie auf meine freigegebene OpenBLAS-Bibliothek zeigen:
numpy.show_config () sagt nur, dass info auf meinem Debian-Linux nicht verfügbar ist.
Allerdings / usr / lib / python3 / dist-packages / scipy / lib hat ein Unterverzeichnis für blas, das Ihnen vielleicht sagt, was Sie wollen. Es gibt ein paar Testprogramme für BLAS in Unterverzeichnisstests.
Hoffe, das hilft.