나는 SVD가 무료 버전에 포함되어 있지 않다고 생각했다. 아래는 QR 분해의 예입니다.
#include<cula.h>
#include<iostream>
int main()
{
float x[] = {1, 2, 3, 4};
int n_rows = 2, n_cols = 2;
float scale[n_cols];
culaInitialize();
culaSgeqrf(n_rows, n_cols, &(x[0]), n_rows, &(scale[0]));
culaShutdown();
for(int ii = 1; ii < n_rows; ii++)
{
for(int jj = 0; jj < n_cols; jj++)
{
if(ii > jj) { x[ii + jj * n_rows] *= scale[jj]; }
}
}
for(int ii = 0; ii < n_rows * n_cols; ii++)
{
std::cout << x[ii] << std::endl;
}
return 0;
}
및 사용하여 컴파일하십시오 .cpp 파일에 넣고
g++ -fPIC -c -I/usr/local/cula/include -Wl,-rpath,/usr/local/cula/lib64 -L/usr/local/cula/lib64 -lcula_lapack_basic gpuQR.cpp
g++ -o gpuQR gpuQR.o -Wl,-rpath,/usr/local/cula/lib64 -L/usr/local/cula/lib64 -lcula_lapack_basic
그런 다음 사용하여 프로그램을 호출
./gpuQR
-2.23607
0.894427
-4.91935
-0.894427
이 CULA 및 Rcpp here에 대한 내 게시물을 확인하십시오.
답장을 보내 주셔서 감사합니다. 너의 것이 내가 너에게 신용을 줄 유일한 대답이다. –