atom_inc / atomic_inc中的cl_out_of_resources错误

时间:2010-10-27 12:05:31

标签: atomic opencl

我在我的一个内核中使用atom_inc。或多或少是这样的:

kernel exampleKernel(
  global volatile int * x, 
  global const int   maxX,
  global const int * buf1, 
  global const int * buf2
  )
{
  if(x < maxX)
  {
    int y = atom_inc(x);
    buf2[y] = buf1[get_global_id(0)];
  }
}

但是当我调用它时,它会给我一个CL_OUT_OF_RESOURCES错误。 用0代替atom_inc(x)解决了这个问题...但是使内核变得无用。

任何可能导致错误的想法?

编辑:我已将这些扩展包含在程序中:

#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable
#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics : enable

Edit2:实际上我使用:

初始化x
kernel.setArgs(0,0);

我必须在这个地方使用记忆对象吗?

亲切的问候, 弗洛里安

1 个答案:

答案 0 :(得分:0)

啊......好吧......看起来你必须在这种情况下使用记忆对象。

这里的解决方案是创建一个元素OpenCL缓冲区并将其设置为第一个参数。

我会留下这个问题并在这里回答,以便其他人可能不会犯同样的错误。