クラスターで使用するために BLAS および LAPACK ライブラリを手動で構築してリンクするにはどうすればよいですか?

クラスターで使用するために BLAS および LAPACK ライブラリを手動で構築してリンクするにはどうすればよいですか?

私は という部分ピボット関数を利用していますgesv。C++でこれを実現するライブラリを取得するには、次の1行のコマンドを使用しました。BLAS および LAPACK パッケージのインストール

sudo apt-get install libblas-dev liblapack-dev

その後、コンパイル命令に以下を追加することでライブラリをリンクすることができました。

g++ main.cpp -llapack -lblas

ラップトップ (Linux 2020) では速度が大幅に向上しましたが、クラスターで実行し始めたときに、同じ (大規模な) ケースを実行すると、このメソッドが非常に遅くなります。両方のライブラリがクラスターにインストールされているとは思いません。コードは実行されるので、速度が向上する方が、使用しているクラスター上にないようです。

コマンドを実行するのではなく、「手作業」で および ライブラリlapackをビルドしてリンクすることは可能ですか?blasapt-get

お時間をいただきありがとうございます。

答え1

ブラス

  • 最新バージョンをダウンロード ブラス

  • ターミナルを開いて保存したディレクトリに移動します

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

ラパック

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

ライブラリが構築され、 に保存されたのでpath/to/lib、質問内の短いサンプル コードをコンパイルできます。

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

関連情報