我想根据条件将一些值输入到 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++ 但它没有返回数组位置的任何最终值时,它起作用了。
谁能解释我做错了什么?