Вопрос

я используюatom_inc в одном из своих ядер.Примерно так:

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

Но при вызове у меня выдается ошибка CL_OUT_OF_RESOURCES.Замена атома_inc(x) на 0 решает эту проблему...но делает ядро ​​бесполезным.

Есть идеи, что может вызвать эту ошибку?

Редактировать:я включил эти расширения в программу:

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

Редактировать2:на самом деле я инициализирую x с помощью:

kernel.setArgs(0,0);

Должен ли я использовать объект памяти в этом месте?

С уважением, Флориан

Это было полезно?

Решение

Ах...хорошо ...похоже, в этом случае вам придется использовать объекты памяти.

Решением здесь было создать одноэлементный буфер OpenCL и установить его в качестве первого аргумента.

Я оставлю этот вопрос и отвечу здесь, чтобы другие не допустили такой же ошибки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top