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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top