CUDA cuBlasGetmatrix/CublaseTMatrix失败|参数解释

CUDA cuBlasGetmatrix/CublaseTMatrix失败|参数解释,cuda,gpgpu,gpu,cublas,Cuda,Gpgpu,Gpu,Cublas,我试图复制以列主格式存储为x的矩阵[1 2 3 4;5 6 7 8;9 10 11 12],方法是首先使用cublasetmatrix将其复制到NVIDIA GPUdux中的矩阵,然后使用cublasGetMatrix()将dux复制到y #包括 #包括“cublas_v2.h” int main() { 立方柄手; 浮点x[][3]={{1,5,9},{2,6,10},{3,7,11},{4,8,12}; 浮点y[4][3]={}; 浮动*d_x; printf(“X\n”); 对于(int

我试图复制以列主格式存储为
x
的矩阵
[1 2 3 4;5 6 7 8;9 10 11 12]
,方法是首先使用
cublasetmatrix
将其复制到NVIDIA GPU
dux
中的矩阵,然后使用
cublasGetMatrix()
dux
复制到
y

#包括
#包括“cublas_v2.h”
int main()
{
立方柄手;
浮点x[][3]={{1,5,9},{2,6,10},{3,7,11},{4,8,12};
浮点y[4][3]={};
浮动*d_x;
printf(“X\n”);

对于(int i=0;i代码中唯一的实际问题是:

cudaMalloc( &d_x,sizeof(d_x) );
sizeof(d_x)
只是指针的大小。您可以这样修复它:

cudaMalloc( &d_x,sizeof(x) );
如果要确定CUBLAS API调用是否失败,则应检查API调用的返回代码:

cublasStatus_t res = cublasSetMatrix( 3,4,sizeof(float),x,3,d_x,3 );
关于参数的描述,您的参数都是正确的(与
d_x
相关的分配错误除外)。因此不清楚您需要对哪一个参数进行描述,但它们都在中进行了描述

CUDA API调用(如
cudamaloc
)也会返回一个错误代码,因此您也应该检查这些错误代码。当您遇到CUDA代码问题时,最好使用它。您还可以使用
CUDA memcheck
运行代码作为快速测试

cublasStatus_t res = cublasSetMatrix( 3,4,sizeof(float),x,3,d_x,3 );