在CUDA中复制2D数组

时间:2012-03-28 09:23:33

标签: cuda

我正在尝试将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

1 个答案:

答案 0 :(得分:1)

看起来d_a不是有效的设备指针,因为您的cudaMalloc调用看起来不正确。它应该是这样的:

int *d_a;
cudaMalloc((void **)&d_a,P*P*sizeof(int));