我使用:CUDA设备指针操作
float *devptr;
//...
cudaMalloc(&devptr, sizeofarray);
cudaMemcpy(devptr, hostptr, sizeofarray, cudaMemcpyHostToDevice);
在CUDA C来分配和填充的阵列。 现在我试图运行CUDA内核,例如:
__global__ void kernelname(float *ptr)
{
//...
}
数组中但偏移值
。 在C/C++这将是成才这样的:
kernelname<<<dimGrid, dimBlock>>>(devptr+offset);
然而,这似乎并没有工作。
有没有办法做到这一点,而不需要在单独的参数中将偏移值发送到内核,并在内核代码中使用该偏移量? 关于如何做到这一点的任何想法?
感谢您的回答。我知道这不是一个字节偏移量,但是,我不知道字的大小是多少。我只是简单地添加了我需要指针的索引号,就像我在C++中一样。那是对的吗? – pmcr 2011-05-06 10:02:42
也许编辑会让事情变得更清晰一些? – talonmies 2011-05-06 10:12:52
谢谢你的时间。这非常有帮助。现在正在工作。这是一个愚蠢的错误。我真的很抱歉。 – pmcr 2011-05-06 10:17:17