cl_out_of_resources errore nel atom_inc / atomic_inc
Domanda
sto usando atom_inc in uno dei miei kernel. Più o meno in questo modo:
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)];
}
}
Ma mi dà un errore CL_OUT_OF_RESOURCES quando lo chiamo io. Sostituzione atom_inc (x) con 0 per risolvere questo problema ... ma rende il kernel inutile.
Tutte le idee che possono causare tale errore?
Edit: ho inserito queste estensioni nel programma:
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable
#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics : enable
Edit2: in realtà ho inizializza x con:
kernel.setArgs(0,0);
Devo utilizzare un oggetto di memoria in questo luogo?
Cordiali saluti, Florian
Soluzione
Ah ... ok ... sembra che si deve oggetti di memoria uso in questo caso.
La soluzione qui era quello di creare uno elemento OpenCL buffer e impostarla come primo argomento.
Lascio questa domanda e risposta qui in modo che gli altri potrebbero non commettere lo stesso errore.