我正在使用名為 的部分旋轉函數gesv
。為了讓函式庫在 C++ 中實現這一點,我使用了一行命令安裝 BLAS 和 LAPACK 軟體包。
sudo apt-get install libblas-dev liblapack-dev
然後我可以透過將以下內容新增至編譯指令來連結庫
g++ main.cpp -llapack -lblas
我在筆記型電腦 (Linux 2020) 上獲得了巨大的速度,但是當我開始在叢集上運行時,在運行相同(大型)案例時該方法非常慢。我認為這兩個庫都沒有安裝在叢集上。程式碼運行,所以看起來無論哪一個提供速度提升都不在我正在使用的叢集上。
是否可以“手動”構建然後鏈接lapack
和blas
庫,而不是執行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