例如,这段代码是否会正常编译和执行?
int* end = local_buffer + BUFFER_SIZE;
for(int* x = local_buffer; x < end; ++x)
{
...
}
答案 0 :(得分:0)
指针算法确实有效,但您需要使用适当的内存空间注释指针。因此,您的示例代码很可能是错误的:如果local_buffer
被声明为
local int local_buffer[BUFFER_SIZE];
然后,end
和x
变量'类型必须还具有local
规范:
local int* end = …;
for (local int* x = …
默认值为global
,如果指针位于本地或常量内存中,则会导致事情严重失败。我发现许多OpenCL实现都不会对此发出警告,所以你必须非常小心。