条件に基づいて、opencl カーネルの出力配列にいくつかの値を入力したいと考えています。したがって、配列に値が入力されるたびに、配列のインデックスをインクリメントしたいと考えています。条件を満たす必要があるため、出力配列インデックスは不明です。出力配列インデックスを引数として使用しています。
__kernel void match(__global float* input, __global float* output, int pos)
{
if(condition)
{
output[pos] = input[get_global_id(0)];
atomic_inc(&pos); // this is where the problem lies
}
}
また、posを配列として与えようとしました
__kernel void match(__global float* input, __global float* output, __global int* pos)
{
if(condition)
{
output[pos[0]] = input[get_global_id(0)];
atomic_inc(pos[0]); // this is where the problem lies
}
}
どちらの場合も、clBuildProgram はエラー コード -11 を返しました。値pos ++をインクリメントすると機能しましたが、配列の位置の最終値は返されませんでした。
誰が私が間違っているのか説明できますか?