我正在处理一个较大的计算问题。为了降低方阵中一组线性方程的计算速度,我使用了lapack
和blas
。为了在我的笔记本电脑(Ubuntu 2020)上获取这些库,我运行了以下命令:
sudo apt-get install libblas-dev liblapack-dev
接着,我通过输入以下代码在编译时进行了链接
g++ main.cpp -llapack -lblas
然而,我正在使用的集群似乎没有这两个库安装。它在集群上运行得很慢,但是芯片更好。我认为它已经安装了lapack
库,但没有blas
库。我想安装两者。
如果既不能访问root也不能使用apt-get
,我该如何构建和编译lapack
和blas
库呢?
以下是一个简短的测试脚本。
#include <iostream>
#include <vector>
extern "C" void dgesv_( int *n, int *nrhs, double *a, int *lda, int *ipiv, double *b, int *lbd, int *info );
int main() {
int SIZE = 3;
int nrhs = 1; // one column in b
int lda = SIZE;
int ldb = SIZE;
std::vector<int> i_piv(SIZE, 0); // pivot column vector
int info;
std::vector<double> A(SIZE*SIZE, 0); // sq mat with 0's
A = {5, 2, 8, 9, 7, 2, 10, 3, 4};
std::vector<double> b(SIZE);
b = {22, 13, 17};
dgesv_( &SIZE, &nrhs, &*A.begin(), &lda, &*i_piv.begin(), &*b.begin(), &ldb, &info );
return 0;
}
我想用以下技术来构建这个项目
g++ main.cpp -L/path/to/lapack -L/path/to/blas -llapack -lblas
b矩阵被替换为解决方案,解决方案是1.71, 1.29, 0.18
(这有点随意,因此我未在代码中提供"print_matrix"函数以减少杂乱)。
谢谢您的时间。
-fPIC
标志。Lapack的制作过程可能需要一段时间。 - John Jiang