CL_OUT_OF_RESources Erro em Atom_inc/Atomic_inc
Pergunta
Estou usando o Atom_inc em um dos meus grãos. Mais ou menos assim:
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)];
}
}
Mas isso me dá um erro cl_out_of_resources quando eu o chamo. Substituir atom_inc (x) por 0 resolve esse problema ... mas torna o kernel inútil.
Alguma idéia do que pode causar esse erro?
EDIT: Eu incluí estas extensões no programa:
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable
#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics : enable
EDIT2: Na verdade, eu inicializo x com:
kernel.setArgs(0,0);
Eu tenho que usar um objeto de memória neste lugar?
Atenciosamente, Florian
Solução
Ah ... ok ... parece que você precisa usar objetos de memória neste caso.
A solução aqui foi criar um buffer OpenCL de um elemento e defini -lo como o primeiro argumento.
Vou deixar essa pergunta e responder aqui para que outros não façam a mesma falha.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow