Ошибка cl_out_of_resources в atom_inc / atomic_inc - PullRequest
1 голос
/ 27 октября 2010

Я использую 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, когда я ее вызываю. Замена atom_inc (x) на 0 решает эту проблему ... но делает ядро ​​бесполезным.

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

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

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

Edit2: на самом деле я инициализирую x с помощью:

kernel.setArgs(0,0);

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

С уважением, Florian

1 Ответ

0 голосов
/ 27 октября 2010

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

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

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

...