나는
1) 그 LAPACKE이 계산에 설치되어 확인 ... 내 데비안이 트릭이 작동하기 위해 CentOS는 충분히 가까운 것으로 가정합니다.
- 당신은 파일
lapacke.h
, lapacke_config.h
, lapacke_mangling.h
, lapacke_mangling_with_flags.h
및 lapacke_utils.h
에 대한 /usr/include
, /usr/local/include
같은 위치를 검색 할 수 있습니다.
- 정적 라이브러리
lapacke.a
또는 동적 라이브러리 lapacke.so
또는 lapacke.so.3
에 대해 /usr/lib
또는 /usr/local/lib
과 같은 위치를 검색 할 수 있습니다.
이러한 파일이 누락 된 경우 liblapacke
및 liblapacke-dev
패키지를 설치하는 것이 좋습니다. (루트 권한이없는 경우 특히) 또는, 당신은 make.inc
-make.inc.example
의 이름을 변경, LAPACKE을 컴파일하려면 http://www.netlib.org/lapack/#_lapack_version_3_6_1에서 NETLIB의 LAPACK 및 lapacke의 소스를 다운로드 할 수 있습니다, 다음 입력 :
make
make lapackelib
(가) 파일이있을 것입니다 포함 lapack-3.6.1/LAPACKE/include
에 있으며 도서관은 lapack-3.6.1
입니다. gcc
및 gfortran
은 lapack과 lapacke를 처음부터 다시 컴파일하는 데 유용합니다.
2)의이 this example에 따라 간단한 코드를 컴파일하자 컴파일
#include <iostream>
#include <string>
#include <fstream>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <lapacke.h>
#include "mpi.h"
void print_matrix_rowmajor(const char* desc, lapack_int m, lapack_int n, double* a, lapack_int lda);
int main(int argc, char *argv[])
{
MPI_Init(&argc,&argv);
std::cout << "Start..." << std::endl;
//std::string fn_VALS;
/* Locals */
double A[5][3] = {1,1,1,2,3,4,3,5,2,4,2,5,5,4,3};
double b[5][2] = {-10,-3,12,14,14,12,16,16,18,16};
lapack_int info,m,n,lda,ldb,nrhs;
/* Initialization */
m = 5;
n = 3;
nrhs = 2;
lda = 3;
ldb = 2;
/* Print Entry Matrix */
print_matrix_rowmajor("Entry Matrix A", m, n, *A, lda);
/* Print Right Rand Side */
print_matrix_rowmajor("Right Hand Side b", n, nrhs, *b, ldb);
printf("\n");
/* Executable statements */
printf("LAPACKE_dgels (row-major, high-level) Example Program Results\n");
/* Solve least squares problem*/
info = LAPACKE_dgels(LAPACK_ROW_MAJOR,'N',m,n,nrhs,*A,lda,*b,ldb);
/* Print Solution */
print_matrix_rowmajor("Solution", n, nrhs, *b, ldb);
printf("\n");
std::cout << "info = " << info << std::endl;
std::cout << "Done :-) !!!" <<std::endl;
MPI_Finalize();
return 0;
}
////////////////////////////////////////////////////////* Auxiliary routine: printing a matrix */
void print_matrix_rowmajor(const char* desc, lapack_int m, lapack_int n, double* a, lapack_int lda)
{
lapack_int i, j;
printf("\n %s\n", desc);
for(i = 0; i < m; i++)
{
for(j = 0; j < n; j++)
{
printf(" %6.2f", a[i*lda+j]);
}
printf("\n");
}
}
//=======================================
명령은 다음과 같습니다
mpiCC main.cpp -o main -llapacke -llapack -lblas -lm -Wall
포함 파일이 특정 폴더에있는 경우, -I/usr/pathtolapackedoth
을 사용합니다. 마찬가지로 라이브러리가 특정 폴더에 있으면 -L/usr/lib/pathtoliblapackedota
을 시도하십시오. MPICH2의 설치 방법에 따라 mpiCC
이 g ++를 래핑 할 가능성이 있습니다. 자세히 알아 보려면 mpiCC --version
을 입력하십시오. 이 개 프로세스를 사용하여 실행하려면 :
mpirun -np 2 main
을 마지막으로, LAPACK (LAPACKE)와 ++/링크/실행 C를 컴파일하기 위해 GNU 포트란은 CentOS는 시스템에 설치 설치할 필요가 없습니다. 실제로 처음부터 LAPACK을 다시 컴파일하려는 경우에만 필요합니다.
고마워요. 내가 그것에 종사하자, 내가 한 일을 게시 할 것이다. – Boki
먼저 LAPACK (E)의 설치를 검색했습니다 : – Boki
타이핑 ** lapack 찾기 ** – Boki