如何手動建立和連結 BLAS 和 LAPACK 庫以在叢集上使用?

如何手動建立和連結 BLAS 和 LAPACK 庫以在叢集上使用?

我正在使用名為 的部分旋轉函數gesv。為了讓函式庫在 C++ 中實現這一點,我使用了一行命令安裝 BLAS 和 LAPACK 軟體包

sudo apt-get install libblas-dev liblapack-dev

然後我可以透過將以下內容新增至編譯指令來連結庫

g++ main.cpp -llapack -lblas

我在筆記型電腦 (Linux 2020) 上獲得了巨大的速度,但是當我開始在叢集上運行時,在運行相同(大型)案例時該方法非常慢。我認為這兩個庫都沒有安裝在叢集上。程式碼運行,所以看起來無論哪一個提供速度提升都不在我正在使用的叢集上。

是否可以“手動”構建然後鏈接lapackblas庫,而不是執行apt-get命令?

感謝您的時間。

答案1

BLAS

  • 下載最新版本 BLAS

  • 打開終端並轉到保存它的目錄

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

相關內容