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.
lapack
Ist es möglich, die und Bibliotheken „manuell“ zu erstellen und zu verknüpfen, blas
anstatt den apt-get
Befehl 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