- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 cuda 中调用 dgetrf 时遇到了一些问题。根据我的发现,我只能调用批处理版本 ( http://docs.nvidia.com/cuda/cublas/#cublas-lt-t-gt-getrfbatched )。当我调用它时,我得到返回的错误值 7,我无法找到该错误代码的相应枚举。以下是我的代码,如有任何帮助,我们将不胜感激;
void cuda_matrix_inverse (int m, int n, double* a){
cublasHandle_t handle;
cublasStatus_t status;
double **devPtrA = 0;
double **devPtrA_dev = NULL;
int *d_pivot_array;
int *d_info_array;
int rowsA = m;
int colsA = n;
int matrixSizeA;
cudaError_t error;
fprintf(stderr,"starting cuda inverse\n");
error = cudaMalloc((void **)&d_pivot_array, sizeof(int));
if (error != cudaSuccess) fprintf(stderr,"\nError: %s\n",cudaGetErrorString(error));
error = cudaMalloc((void **)&d_info_array, sizeof(int));
if (error != cudaSuccess) fprintf(stderr,"\nError: %s\n",cudaGetErrorString(error));
fprintf(stderr,"malloced pivot and info\n");
status = cublasCreate(&handle);
if (status != CUBLAS_STATUS_SUCCESS) fprintf(stderr,"error %i\n",status);
matrixSizeA = rowsA * colsA;
devPtrA =(double **)malloc(1 * sizeof(*devPtrA));
fprintf(stderr,"malloced devPtrA\n");
error = cudaMalloc((void **)&devPtrA[0], matrixSizeA * sizeof(devPtrA[0][0]));
if (error != cudaSuccess) fprintf(stderr,"\nError: %s\n",cudaGetErrorString(error));
error = cudaMalloc((void **)&devPtrA_dev, 1 * sizeof(*devPtrA));
if (error != cudaSuccess) fprintf(stderr,"\nError: %s\n",cudaGetErrorString(error));
fprintf(stderr,"malloced device variables\n");
error = cudaMemcpy(devPtrA_dev, devPtrA, 1 * sizeof(*devPtrA), cudaMemcpyHostToDevice);
if (error != cudaSuccess) fprintf(stderr,"\nError: %s\n",cudaGetErrorString(error));
fprintf(stderr,"copied from devPtrA to d_devPtrA\n");
status = cublasSetMatrix(rowsA, colsA, sizeof(a[0]), a, rowsA, devPtrA[0], rowsA);
if (status != CUBLAS_STATUS_SUCCESS) fprintf(stderr,"error %i\n",status);
status = cublasDgetrfBatched(handle, m, devPtrA_dev,m,d_pivot_array,d_info_array,1); //cannot get this to work
if (status != CUBLAS_STATUS_SUCCESS) fprintf(stderr,"error in dgetrf %i\n",status);
fprintf(stderr,"done with cuda inverse\n");
}
最佳答案
cublas的错误码7表示CUBLAS_STATUS_INVALID_VALUE
. cublas 中的矩阵求逆仅适用于方矩阵,因此我假设 m == n
在你的情况下。话虽这么说,功能cublas<t>getrfBatched
要求枢轴数组的长度为 n
对于每个矩阵,所以你应该分配 d_pivot_array
作为:
error = cudaMalloc((void **)&d_pivot_array, n * sizeof(int));
为了更通用,它被分配为:
error = cudaMalloc((void **)&d_pivot_array, n * batchSize * sizeof(int));
Here是我在测试 CUBLAS 函数时编写的方阵求逆代码。函数输入输出为float
设备上分配的类型方阵。
关于c++ - Cublas 矩阵 LU 分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22501502/
我正在尝试主要基于 LU decomposition with partial pivoting Matlab 来处理我的 lu 分解 function [L,U,P] = lup(A) n = le
我试图通过使用 LU 分解来求解 Ax=b,但不知何故我无法通过乘以 L*U 来得到 A。这是代码和结果; A = array([2,3,5,4]).reshape(2,2) b = array([4
设 A 为以下矩阵: 1 3 2 4 如果我调用 lu( ) 函数并像这样保存返回值: [L, U] = lu(A); MATLAB 返回 L, U 使得 L * U = A: >> L * U an
我在 cython 中编写了以下 Matrix 类 用于矩阵求逆和其他一些线性代数运算。我尝试使用LU 分解 来计算矩阵的逆。代码速度很好。我试图实现 this code在 cython 中。我已经检
以下函数不使用行透视进行 LU 分解。 R 中是否有一个现有的函数可以使用行数据进行 LU 分解? > require(Matrix) > expand(lu(matrix(rnorm(16),4,4
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我按照算法写了代码,但是结果不对。根据算法,我们必须指明矩阵的维数,并手动填写主矩阵A和 vector B。我们需要生成一个LU矩阵。它已生成,但编号错误。最后我们必须得到带有解的 vector X。
我正在做 LU decom,我在 googel 上找到了这段代码,但想通过输出“pvt”和“a”来理解它,但它似乎是我的 pvt 不正确,所以我得到了一些不同的东西所以请问谁能纠正我 ..谢谢 这是我
给定 L 和 U LU decomposition和常数 b 的向量使得 LU*x=b ,是否有找到 x 的内置函数?意思是 - X = functionName(L,U,b) 请注意,在 L 和 U
lu 在这种情况下是什么意思: size_t size = 10lu; 我一无所获。 谢谢! 最佳答案 简化:这意味着 unsigned long。 另请引用this. 关于c++ - 变量定义中 "
我在 c# 中偶然发现了这个正则表达式,我想移植到 javascript,但我不明白以下内容: [-.\p{Lu}\p{Ll}0-9]+ 我很难理解的部分当然是\p{Lu}。我访问过的所有正则表达式网
应该如何解释这一规则 fragment LETTER_UPPERCASE : [\p{Lu}] ; 在 https://github.com/okellogg/ada_antlr_grammar/b
应该如何解释这一规则 fragment LETTER_UPPERCASE : [\p{Lu}] ; 在 https://github.com/okellogg/ada_antlr_grammar/b
Lu 应该代表 Letter, Uppercase,但是我得到意想不到的结果 PS > 'Hello World' -replace '\p{Lu}', 'Z' ZZZZZ ZZZZZ 可以看出,Lu
我知道用 %lu 打印一个无符号长整数是不好的做法。在我正在从事的一个项目中,当我尝试以 snprint 格式用 %lu 打印 11 时,我得到了一个很大的数字。(旧代码)我使用的是 gcc 4.9.
我对下面的代码有问题,经过一些研究我在单独的一行中挑出了这个问题,但现在不确定如何解决它。 typedef double ComplexType; typedef std::complex Compl
我正在使用 Armadillo C++ 库求解中/大型线性系统(1000-5000 个方程)。 因为我必须解决不同的线性系统 AX=b 其中 A 始终相同而 B 发生变化,我只想对 A 进行 LU 分
我正在使用 C++ 中的 Eigen 库来求解稀疏线性方程:Ax=b 其中,A 是一个稀疏方阵,b 是一个矩形稀疏矩阵。我有多个 A 矩阵实例,每个实例都有多个右侧 b。因此,我想对所有 A 矩阵进行
更新:这是解决方案,我向每一行添加了一个标量以控制下溢和上溢。感谢大家的帮助。 我一直在研究 C++ 中的 LU 分解,希望有一天能分解并求解大型稀疏矩阵。我找到了一些代码并对其进行了修改以供自己使用
我目前在将数组分解为上 (u) 和下 (l) 数组时遇到一些问题。 我正在使用杜立特方法 我的代码: #include using namespace std; int main(){ do
我是一名优秀的程序员,十分优秀!