例如,这段代码能否正常编译并执行?
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
说明符:
local int* end = …;
for (local int* x = …
默认值为全局
,如果您的指针指向本地或常量内存,这将导致事情严重失败。我发现许多 OpenCL 实现不会就此发出警告,因此您必须非常小心。
关于c - 普通的指针算术可以在 opencl 内核上工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38216611/