cl_out_of_resources Fehler in atom_inc / atomic_inc
Frage
Ich bin mit atom_inc in einen meines Kern. Mehr oder weniger wie folgt aus:
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)];
}
}
Aber es gibt mir einen CL_OUT_OF_RESOURCES Fehler, wenn ich es nennen. Ersetzen atom_inc (x) mit 0 wird dieses Problem gelöst ... aber macht den Kernel nutzlos.
Alle Ideen, was diesen Fehler verursachen können?
Edit: Ich habe diese Erweiterungen im Programm enthalten:
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable
#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics : enable
Edit2: tatsächlich i initialisieren x mit:
kernel.setArgs(0,0);
Muss ich an dieser Stelle ein Speicherobjekt verwenden?
Mit freundlichen Grüßen, Florian
Lösung
Ah ... ok ... es sieht aus wie Sie verwenden Speicherobjekte in diesem Fall haben.
Die Lösung hier war ein ein Element erstellen OpenCL-Puffer und legen Sie es als erstes Argument.
Ich werde diese Frage lassen und hier so beantworten, dass andere vielleicht nicht den gleichen Fehler machen.