작업중인 큰 계산 문제가 있습니다. 정방 행렬로 선형 방정식들의 세트의 연산 속도를 감소하기 위해, I는 사용 만들었다 lapack
하고 blas
. 랩톱 (Ubuntu 2020)에서 라이브러리를 가져 오기 위해 다음 명령을 실행했습니다.
sudo apt-get install libblas-dev liblapack-dev
그런 다음 컴파일시 다음을 입력하여 코드를 연결했습니다.
g++ main.cpp -llapack -lblas
그러나 작업중인 클러스터에 두 라이브러리가 모두 설치되어 있지 않은 것 같습니다. 클러스터에서는 훨씬 느리지 만 더 나은 칩입니다. 실행되므로 lapack
라이브러리가 설치되어 있다고 생각 하지만 blas
. 둘 다 설치하고 싶습니다.
lapack
과 blas
와 도서관 도 루트도에 대한 액세스를 apt-get
?다음은 테스트를위한 간단한 스크립트입니다.
#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"함수를 제공하지 않아 혼란을 줄입니다).
시간 내 주셔서 감사합니다.
최신 버전의 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
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다