cl_out_of_resources error in atom_inc/atomic_inc
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
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