Question

i am using atom_inc in one of my kernels. More or less like this:

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)];
  }
}

But it gives me an CL_OUT_OF_RESOURCES error when i call it. Replacing atom_inc(x) with 0 resolves this problem ... but makes the kernel useless.

Any ideas what can cause that error?

Edit: i have included these extensions in the program:

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

Edit2: actually i initialize x with:

kernel.setArgs(0,0);

Do i have to use a memory object in this place?

Kind Regards, Florian

Was it helpful?

Solution

Ah ... ok ... it looks like you have to use memory objects in this case.

The solution here was to create a one element OpenCL buffer and set it as the first argument.

I'll leave this question and answer here so that others might not make the same fault.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top