Так что я пытаюсь сделать что-то вроде этого:OpenCL: синхронизация между ядрами
В моем коде хост У меня есть цикл
for(int i = 0; i < params.maxIters; i++){
launch1DKernel(kernel…)
}
и в моем ядре я thave
__kernel k(__global int * i, …){
somearray[i * size + offset] = some_val;
if(get_global_id(0) == 0){
(*i) = (*i) + 1;
}
}
Это кажется нехорошим pproach, потому что я хочу гарантировать, что все рабочие элементы одной и той же итерации разделяют i. И вышеприведенный код не гарантирует, что я не буду расправляться с работающим элементом следующей итерации. Правильно ли я об этом?