0
例如,这段代码是否会正常编译和执行?正常的指针算术在opencl内核上工作吗?
int* end = local_buffer + BUFFER_SIZE;
for(int* x = local_buffer; x < end; ++x)
{
...
}
例如,这段代码是否会正常编译和执行?正常的指针算术在opencl内核上工作吗?
int* end = local_buffer + BUFFER_SIZE;
for(int* x = local_buffer; x < end; ++x)
{
...
}
指针算术确实有效,但您需要使用适当的内存空间注释您的指针。所以,你的示例代码是最有可能的错误:如果local_buffer
被声明为
local int local_buffer[BUFFER_SIZE];
然后end
和x
变量的类型必须也有local
specfier:
local int* end = …;
for (local int* x = …
默认为global
,如果您的指针进入本地或常量内存,将导致事情失败。我发现许多OpenCL实现不会警告你,所以你必须非常小心。
是的,只要指针都在设备空间。没有任何问题。 – DarkZeros