我正在尝试将2D数组从CPU复制到GPU。从主机端我发送2D数组的基本指针,P是一维中的元素数
int *d_a;
cudaMalloc(d_a,P*P*sizeof(int));
copyKernelHostToDevice((int(*)[P])d_a,(int(*)[P])hAligned_a);
copyKernelHostToDevice((int(*)[P])d_b,(int(*)[P])hAligned_b);
inline void copyKernelHostToDevice(int (*A)[P],int (*B)[P]){
for(int i=0;i<P;i++)
cutilSafeCall(cudaMemcpyAsync(A[i],B[i],P*sizeof(int),cudaMemcpyHostToDevice));
}
但是上面的代码给了我运行时错误
cudaSafeCall()运行时API错误11:参数无效。
我错过了什么吗? P非常大...... arnd 2048
答案 0 :(得分:1)
看起来d_a
不是有效的设备指针,因为您的cudaMalloc
调用看起来不正确。它应该是这样的:
int *d_a;
cudaMalloc((void **)&d_a,P*P*sizeof(int));