普通指针算法是否适用于opencl内核?

时间:2016-07-06 05:03:01

标签: c opencl gpu gpgpu

例如,这段代码是否会正常编译和执行?

int* end = local_buffer + BUFFER_SIZE;
for(int* x = local_buffer; x < end; ++x)
{
   ...
}

1 个答案:

答案 0 :(得分:0)

指针算法确实有效,但您需要使用适当的内存空间注释指针。因此,您的示例代码很可能是错误的:如果local_buffer被声明为

local int local_buffer[BUFFER_SIZE];

然后,endx变量'类型必须还具有local规范:

local int* end = …;
for (local int* x = …

默认值为global,如果指针位于本地或常量内存中,则会导致事情严重失败。我发现许多OpenCL实现都不会对此发出警告,所以你必须非常小心。