Finde heraus, ob / welche BLAS-Bibliothek von Numpy benutzt wird

7

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

    
Apoptose 12.05.2016, 10:44
quelle

3 Antworten

16

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:

%Vor%

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:

    %Vor%

Betrachte die Version von numpy, die ich über apt-get installiert habe:

%Vor%

/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:

%Vor%     
ali_m 12.05.2016, 14:58
quelle
2

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.

    
Jorgen 12.05.2016 11:15
quelle
1

Sie möchten numpy.show_config() überprüfen, um zu sehen, welche Bibliotheken konfiguriert sind.

    
JoshAdel 12.05.2016 10:59
quelle

Tags und Links