私は という部分ピボット関数を利用していますgesv
。C++でこれを実現するライブラリを取得するには、次の1行のコマンドを使用しました。BLAS および LAPACK パッケージのインストール。
sudo apt-get install libblas-dev liblapack-dev
その後、コンパイル命令に以下を追加することでライブラリをリンクすることができました。
g++ main.cpp -llapack -lblas
ラップトップ (Linux 2020) では速度が大幅に向上しましたが、クラスターで実行し始めたときに、同じ (大規模な) ケースを実行すると、このメソッドが非常に遅くなります。両方のライブラリがクラスターにインストールされているとは思いません。コードは実行されるので、速度が向上する方が、使用しているクラスター上にないようです。
コマンドを実行するのではなく、「手作業」で および ライブラリlapack
をビルドしてリンクすることは可能ですか?blas
apt-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