使用cuMemCpy2D将array2D从设备复制到主机时出现问题

时间:2013-03-20 11:27:27

标签: cuda

我正在用C#编写的旧程序更改代码,以使Cuda更高效。 我的问题是我必须使用cuMemCpy2D复制一个具有两个维度的数组,从设备到主机,但我不知道此函数所需的正确参数。 这是我遇到问题的代码:

这里我初始化音高大小,一行数组的大小和数组:

size_t size_media_pitch;
size_t size_media = NUMKS*sizeof(double);

double *h_media;

h_media = (double *)malloc(2 * size_media);

这里我将设备指针初始化为数组,为它保留内存并调用内核函数:

CUdeviceptr d_media;
error = cuMemAllocPitch(&d_media, &size_media_pitch, NUMKS*sizeof(double)
                       ,2,sizeof(double));

error = cuLaunchKernel(primeros_kernel2Block1Thread,  blocksPerGrid, 1, 1,
                           threadsPerBlock, 1, 1,
                           0,
                           NULL, args, NULL);

这就是我遇到问题的地方:

CUDA_MEMCPY2D *pCopy ;

pCopy->srcMemoryType = CU_MEMORYTYPE_DEVICE;
pCopy->srcDevice = d_media;
pCopy->srcPitch = size_media_pitch;

pCopy->dstMemoryType =CU_MEMORYTYPE_ARRAY ;
pCopy->dstArray = h_media;
pCopy->WidthInBytes = size_media;
pCopy->Height = 2;

error = cuMemcpy2D(pCopy);

0 个答案:

没有答案