Matrix cublas cublasDgetrfBatched()批处理LU因子分解不';t使用大于32x32的矩阵
我为Matlab编写了一个cuda函数,使用cublasDgetrfBatched()对一批矩阵执行LU分解。此函数的工具箱文档如下所示 它适用于大小为32x32的矩阵。但对于较大的矩阵,状态代码CUBLAS_status_无效_值失败。下面是我的源代码(gpuBatchedLU.cu): 我从MATLAB调用: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))
[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