Question

J'utilise atom_inc dans un de mes noyaux. Plus ou moins comme ceci:

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

Mais il me donne une erreur CL_OUT_OF_RESOURCES quand je l'appelle. Remplacement atom_inc (x) avec 0 résout ce problème ... mais rend le noyau inutile.

Toutes les idées ce qui peut causer cette erreur?

Edit: i ont inclus ces extensions dans le programme:

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

Edit2: en fait j'initialize x avec:

kernel.setArgs(0,0);

Dois-je utiliser un objet de mémoire dans ce lieu?

Cordialement, Florian

Était-ce utile?

La solution

Ah ... ok ... il semble que vous devez utiliser des objets de mémoire dans ce cas.

La solution ici est de créer un élément tampon et une OpenCL il défini comme étant le premier argument.

Je vais laisser cette question et répondre ici afin que d'autres pourraient ne pas faire la même erreur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top