Linux 클러스터에서 C ++에서 사용하기 위해 BLAS 및 LAPACK을 빌드하는 방법은 무엇입니까?

GeneralCode

작업중인 큰 계산 문제가 있습니다. 정방 행렬로 선형 방정식들의 세트의 연산 속도를 감소하기 위해, I는 사용 만들었다 lapack하고 blas. 랩톱 (Ubuntu 2020)에서 라이브러리를 가져 오기 위해 다음 명령을 실행했습니다.

sudo apt-get install libblas-dev liblapack-dev

그런 다음 컴파일시 다음을 입력하여 코드를 연결했습니다.

g++ main.cpp -llapack -lblas

그러나 작업중인 클러스터에 두 라이브러리가 모두 설치되어 있지 않은 것 같습니다. 클러스터에서는 훨씬 느리지 만 더 나은 칩입니다. 실행되므로 lapack라이브러리가 설치되어 있다고 생각 하지만 blas. 둘 다 설치하고 싶습니다.

어떻게 구축하고 컴파일 할 lapackblas와 도서관 루트도에 대한 액세스를 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"함수를 제공하지 않아 혼란을 줄입니다).

시간 내 주셔서 감사합니다.

GeneralCode

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

LAPACK

  • 최신 버전의 LAPACK 다운로드
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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

scip를 C에 연결하기 위해 makefile을 사용하고 빌드하는 방법은 무엇입니까?

분류에서Dev

Linux 및 Windows에서 사용하기 위해 FAT32로 USB 스틱 (플래시 드라이브)을 포맷하는 방법은 무엇입니까?

분류에서Dev

Windows / Linux에서 SD 카드 클래스 및 기타 사양을 확인하는 방법은 무엇입니까?

분류에서Dev

Android에서 실행하기 위해 OpenCL 및 fastcv로 실행 가능한 ARM64-V8 프로그램을 빌드하는 방법은 무엇입니까?

분류에서Dev

Objective-C 프로그램을 컴파일하고 실행하기 위해 Geany IDE에서 빌드 명령을 만드는 방법은 무엇입니까?

분류에서Dev

메서드 C #에서 사용하기 위해 정규식의 변수 $ 1을 사용하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 반복을 위해 __iter__ 및 __next__를 사용하는 방법은 무엇입니까?

분류에서Dev

프레스코 화에서 사용하기 위해 Circle ProgressDrawable을 만드는 방법은 무엇입니까?

분류에서Dev

상속을 사용하여 모델을 바인딩하기 위해 뷰 및 컨트롤러 메서드를 설정하는 방법은 무엇입니까?

분류에서Dev

Hive 사용을 위해 C #에서 Linux 보이지 않는 문자를 추가하는 방법은 무엇입니까?

분류에서Dev

Postgres C / C ++ 확장을 빌드하기 위해 Makefile에서 CPPFLAGS 및 CFLAGS를 선택하도록 pg_config / pgxs / make를 구성하는 방법은 무엇입니까?

분류에서Dev

Linux 클러스터에 R을 설치하는 방법은 무엇입니까?

분류에서Dev

내용을 표시하기 위해 Linux 경로에서 변수 값을 사용하는 방법은 무엇입니까?

분류에서Dev

루트 액세스 및 SSH 키 기반 인증을 위해 sudo가 필요한 시스템에서 SFTP를 사용하는 방법은 무엇입니까?

분류에서Dev

루트 액세스 및 SSH 키 기반 인증을 위해 sudo가 필요한 시스템에서 SFTP를 사용하는 방법은 무엇입니까?

분류에서Dev

Linux 용 Windows 하위 시스템에서 프록시 연결을 사용하는 방법은 무엇입니까?

분류에서Dev

Opencv에서 Hausdorff Distance를 찾기 위해 Shape Distance 및 Common Interface를 사용하는 방법은 무엇입니까?

분류에서Dev

redis 클러스터에 연결하기 위해 sails 앱을 설정하는 방법은 무엇입니까?

분류에서Dev

Linux에서 사용되는 SMB 연결 및 방언을 확인하는 방법은 무엇입니까?

분류에서Dev

Node.js 및 TypeScript에서 읽을 수있는 스트림을 빌드하는 방법은 무엇입니까?

분류에서Dev

하위 디렉터리 내에서 .cpp 및 .h 파일을 사용하는 방법은 무엇입니까?

분류에서Dev

Kubernetes 클러스터 내부에서 포드 목록을 가져 오기 위해 서비스 계정을 만드는 방법은 무엇입니까?

분류에서Dev

Tensorflow Federated에서 여러 기능을 사용하여 모델을 빌드하는 방법은 무엇입니까?

분류에서Dev

클러스터 환경에서 Spark Scala를 사용하여 csv에서 waldos를 찾기 위해 처리를 분산하는 방법은 무엇입니까?

분류에서Dev

다중 스레드를 위해 C에서 뮤텍스를 사용하는 방법은 무엇입니까?

분류에서Dev

swuiftui에서 양식 편집을 위해 데이터를 전달하는 가장 좋은 방법은 무엇입니까 (해당 데이터를 상위보기 및 기타 하위보기에서 사용할 수 있음)?

분류에서Dev

Python 및 하위 프로세스에서 소켓을 사용하는 방법은 무엇입니까?

분류에서Dev

React (후크)에서 개체의 값을 읽고 표시하기 위해 setState 및 useEffect를 올바르게 사용하는 방법은 무엇입니까?

분류에서Dev

Apache Spark 및 Drill AWS 클러스터에서 AWS 클러스터 인스턴스 유형을 최적화하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    scip를 C에 연결하기 위해 makefile을 사용하고 빌드하는 방법은 무엇입니까?

  2. 2

    Linux 및 Windows에서 사용하기 위해 FAT32로 USB 스틱 (플래시 드라이브)을 포맷하는 방법은 무엇입니까?

  3. 3

    Windows / Linux에서 SD 카드 클래스 및 기타 사양을 확인하는 방법은 무엇입니까?

  4. 4

    Android에서 실행하기 위해 OpenCL 및 fastcv로 실행 가능한 ARM64-V8 프로그램을 빌드하는 방법은 무엇입니까?

  5. 5

    Objective-C 프로그램을 컴파일하고 실행하기 위해 Geany IDE에서 빌드 명령을 만드는 방법은 무엇입니까?

  6. 6

    메서드 C #에서 사용하기 위해 정규식의 변수 $ 1을 사용하는 방법은 무엇입니까?

  7. 7

    파이썬에서 반복을 위해 __iter__ 및 __next__를 사용하는 방법은 무엇입니까?

  8. 8

    프레스코 화에서 사용하기 위해 Circle ProgressDrawable을 만드는 방법은 무엇입니까?

  9. 9

    상속을 사용하여 모델을 바인딩하기 위해 뷰 및 컨트롤러 메서드를 설정하는 방법은 무엇입니까?

  10. 10

    Hive 사용을 위해 C #에서 Linux 보이지 않는 문자를 추가하는 방법은 무엇입니까?

  11. 11

    Postgres C / C ++ 확장을 빌드하기 위해 Makefile에서 CPPFLAGS 및 CFLAGS를 선택하도록 pg_config / pgxs / make를 구성하는 방법은 무엇입니까?

  12. 12

    Linux 클러스터에 R을 설치하는 방법은 무엇입니까?

  13. 13

    내용을 표시하기 위해 Linux 경로에서 변수 값을 사용하는 방법은 무엇입니까?

  14. 14

    루트 액세스 및 SSH 키 기반 인증을 위해 sudo가 필요한 시스템에서 SFTP를 사용하는 방법은 무엇입니까?

  15. 15

    루트 액세스 및 SSH 키 기반 인증을 위해 sudo가 필요한 시스템에서 SFTP를 사용하는 방법은 무엇입니까?

  16. 16

    Linux 용 Windows 하위 시스템에서 프록시 연결을 사용하는 방법은 무엇입니까?

  17. 17

    Opencv에서 Hausdorff Distance를 찾기 위해 Shape Distance 및 Common Interface를 사용하는 방법은 무엇입니까?

  18. 18

    redis 클러스터에 연결하기 위해 sails 앱을 설정하는 방법은 무엇입니까?

  19. 19

    Linux에서 사용되는 SMB 연결 및 방언을 확인하는 방법은 무엇입니까?

  20. 20

    Node.js 및 TypeScript에서 읽을 수있는 스트림을 빌드하는 방법은 무엇입니까?

  21. 21

    하위 디렉터리 내에서 .cpp 및 .h 파일을 사용하는 방법은 무엇입니까?

  22. 22

    Kubernetes 클러스터 내부에서 포드 목록을 가져 오기 위해 서비스 계정을 만드는 방법은 무엇입니까?

  23. 23

    Tensorflow Federated에서 여러 기능을 사용하여 모델을 빌드하는 방법은 무엇입니까?

  24. 24

    클러스터 환경에서 Spark Scala를 사용하여 csv에서 waldos를 찾기 위해 처리를 분산하는 방법은 무엇입니까?

  25. 25

    다중 스레드를 위해 C에서 뮤텍스를 사용하는 방법은 무엇입니까?

  26. 26

    swuiftui에서 양식 편집을 위해 데이터를 전달하는 가장 좋은 방법은 무엇입니까 (해당 데이터를 상위보기 및 기타 하위보기에서 사용할 수 있음)?

  27. 27

    Python 및 하위 프로세스에서 소켓을 사용하는 방법은 무엇입니까?

  28. 28

    React (후크)에서 개체의 값을 읽고 표시하기 위해 setState 및 useEffect를 올바르게 사용하는 방법은 무엇입니까?

  29. 29

    Apache Spark 및 Drill AWS 클러스터에서 AWS 클러스터 인스턴스 유형을 최적화하는 방법은 무엇입니까?

뜨겁다태그

보관