[英]culagesvd() in CULA
我想使用culadgesvd()
函數來計算矩陣的SVD。 我不清楚如何使用文檔中的信息在C / C ++中實際使用它。 任何人都可以給我一個完整的小C程序,一個模板,以顯示該函數的基本使用方式嗎? 只需幾行(使用culaInitialize()
和culaShutdown()
類的東西),我只需要看看這個函數如何運行而不會出錯。
我認為SVD不包含在免費版本中(盡管如此)。 以下是QR分解的示例。 把它放在.cpp文件中:
#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;
}
並使用以下方法編譯它
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的帖子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.