Wie erstelle und verknüpfe ich BLAS- und LAPACK-Bibliotheken manuell zur Verwendung im Cluster?

Wie erstelle und verknüpfe ich BLAS- und LAPACK-Bibliotheken manuell zur Verwendung im Cluster?

Ich verwende eine partielle Pivot-Funktion namens gesv. Um die Bibliotheken zu erhalten, die dies in C++ ermöglichen, habe ich einen einzeiligen Befehl von verwendetInstallieren von BLAS- und LAPACK-Paketen.

sudo apt-get install libblas-dev liblapack-dev

Dann konnte ich die Bibliotheken verknüpfen, indem ich den Kompilierungsanweisungen Folgendes hinzufügte

g++ main.cpp -llapack -lblas

Ich habe auf meinem Laptop (Linux 2020) eine enorme Geschwindigkeitssteigerung erreicht, aber als ich mit der Ausführung auf einem Cluster begann, war die Methode im selben (großen) Fall extrem langsam. Ich glaube nicht, dass beide Bibliotheken auf dem Cluster installiert sind. Der Code läuft, also scheint es, als ob diejenige, die die Geschwindigkeitssteigerung bietet, nicht auf dem von mir verwendeten Cluster vorhanden ist.

lapackIst es möglich, die und Bibliotheken „manuell“ zu erstellen und zu verknüpfen, blasanstatt den apt-getBefehl auszuführen?

Vielen Dank für Ihre Zeit.

Antwort1

BLAS

  • Laden Sie die neueste Version von BLAS

  • Öffnen Sie ein Terminal und gehen Sie in das Verzeichnis, in dem Sie es gespeichert haben

tar -xvf blas-3.8.0.tgz  # unzip the blas source files
cd BLAS-3.8.0/ 
make
mv blas_LINUX.a libblas.a
mv *.a path/to/lib  # move the blas lib to the library you will be including at compile

LAPACK

  • Laden Sie die neueste Version vonLAPACK
tar -xvf lapack-3.9.0.tar.gz
cd lapack-3.9.0/
cp make.inc.example make.inc  # use example make as make
make
cp *.a path/to/lib

Nachdem die Bibliotheken erstellt und in gespeichert wurden path/to/lib, kann der kurze Beispielcode in der Frage kompiliert werden.

g++ main.cpp -L/path/to/lib -llapack -lblas -lgfortran  # compiles the code
./a.out  # runs the code

verwandte Informationen