Matrix cublas cublasDgetrfBatched()批处理LU因子分解不';t使用大于32x32的矩阵

Matrix cublas cublasDgetrfBatched()批处理LU因子分解不';t使用大于32x32的矩阵,matrix,cuda,matlab,cublas,Matrix,Cuda,Matlab,Cublas,我为Matlab编写了一个cuda函数,使用cublasDgetrfBatched()对一批矩阵执行LU分解。此函数的工具箱文档如下所示 它适用于大小为32x32的矩阵。但对于较大的矩阵,状态代码CUBLAS_status_无效_值失败。下面是我的源代码(gpuBatchedLU.cu): 我从MATLAB调用: [a1,b1,c1]=gpuBatchedLU(randn(32,32,5)); %no problem [a2,b2,c2]=gpuBatchedLU(randn(33,33,5))

我为Matlab编写了一个cuda函数,使用cublasDgetrfBatched()对一批矩阵执行LU分解。此函数的工具箱文档如下所示

它适用于大小为32x32的矩阵。但对于较大的矩阵,状态代码CUBLAS_status_无效_值失败。下面是我的源代码(gpuBatchedLU.cu):

我从MATLAB调用:

[a1,b1,c1]=gpuBatchedLU(randn(32,32,5)); %no problem
[a2,b2,c2]=gpuBatchedLU(randn(33,33,5)); %produces CUBLAS_STATUS_INVALID_VALUE
我使用MatlabR2013B和并行工具箱、CUDA5.5和一个NVS 5200M图形芯片


有人能重复这个问题吗?如果您能就如何解决此问题提供任何建议,我将不胜感激。

问题似乎在于Matlab R2013b在5.0版中使用了
libcublas.so
。文件链接位于
/MATLAB/R2013b/bin/glnxa64/
中。一旦我更改了到
libcublas的链接,那么我的Cuda 5.5安装的
就工作得很好。

CUBLAS库用户指南说
CUBLAS\u STATUS\u INVALID\u VALUE
是由于
向函数传递了不受支持的值或参数(例如负向量大小)而产生的。纠正方法:确保所传递的所有参数都具有有效值。
您这样做了吗?感谢您的建议,JackOLantern。我验证了参数是否正常。为什么要将
inout\u存储
强制转换为(
char*
)?对于小于
32的大小,您的代码是否返回正确的结果?您编译的计算能力是什么?我转换为“(char*)”,因为我在某个地方找到了它,它可以工作。。。是的,对于小于或等于“32x32”的大小,我的代码返回正确的结果。
mex -L/usr/local/cuda/lib64 -lcudart -lcublas gpuBatchedLU.cu
[a1,b1,c1]=gpuBatchedLU(randn(32,32,5)); %no problem
[a2,b2,c2]=gpuBatchedLU(randn(33,33,5)); %produces CUBLAS_STATUS_INVALID_VALUE