__kernel void cl_test(__global int* Number)
{
int id = get_global_id(0);
if (id%5==0)
{
Number[0]++;
}
if (id%10==0)
{
Number[1]++;
}
}
如您所见,这是一个非常简单的 OpenCL 内核测试代码,我想要的是在一个范围内收集可被 5 和 10 整除的数字。
所以问题来了:由于每个工作项的计算不是纯并行的,因此不同项中的 Number[0] 或 [1] 是相关的。我无法通过读取 Number[0] 或 Number[1] 得到正确的结果。
有没有像 C++ 中的“全局变量”这样的解决方案?
谢谢!