CUDA二维数组的内存申请和数据复制
我有一个31*2的二维数组,下一步要把它复制到GPU上进行并行化处理计算,我应该怎么实施呢?我的程序写完了,编译成功也可以运行,但是这个数组似乎没有传到核函数当中去,因为这个数组本身就没有变化,请指点,非常感谢
float coordinate[31][2]={{1304.0,2312.0},{3639.0,1315.0},{4177.0,2244.0},{3712.0,1399.0},{3488.0,1535.0},{3326.0,1556.0},{3238.0,1229.0},{4196.0,1004.0},{4312.0,790.0},{4386.0,570.0},{3007.0,1970.0},{2562.0,1756.0},{2788.0,1491.0},{2381.0,1676.0},{1332.0,695.0},{3715.0,1678.0},{3918.0,2179.0},{4061.0,2370.0},{3780.0,2212.0},{3676.0,2578.0},{4029.0,2838.0},{4263.0,2931.0},{3429.0,1908.0},{3507.0,2367.0},{3394.0,2643.0},{3439.0,3201.0},{2935.0,3240.0},{3140.0,3550.0},{2545.0,2357.0},{2778.0,2826.0},{2370.0,2975.0}};
float (*GPU)[2];
size_t GPUPitch;
cudaMallocPitch((void**)&GPU,&GPUPitch,sizeof(float)*n,m);
cudaMemcpy2D(GPU,GPUPitch,coordinate,n,sizeof(float)*n,m,cudaMemcpyHostToDevice);
caculate<<<1,1,0>>>(GPU);
float (*asdcpu)[2];
cudaMemcpy2D(asdcpu,GPUPitch,GPU,n,sizeof(float)*n,m,cudaMemcpyDeviceToHost);
//核函数
__global__ void caculate(float (*asd)[2])
{
for(int i=0;i<m;i++)
{
for (int j=0;j<n;j++)
{
asd[i][j]=asd[i][j]+10000.0;
}
}
}