编译下面的方法时遇到问题。 如果选择CUDA作为目标,则编译正常,但是如果选择OpenCL则会引发错误。
[Cudafy]
unsafe static void MyKernelMethod(
GThread thread,
[CudafyAddressSpace(eCudafyAddressSpace.Constant)] int[] a)
{
// fix our array to a ptr
fixed (int* aPtr = a)
{
// get a new array pointing to some offset of the original array
int* aPtr_Offset = aPtr + thread.blockIdx.x;
// use it for something
aPtr_Offset[thread.threadIdx.x] = 2;
// some more code...
}
}
错误:
错误:具有不同地址空间的两个指针之间的非法隐式转换
我没有足够的知识如何纠正这个问题(我刚刚开始GPGPU编程)。