我见过这样的解决方案:
kernel dp_square (const float *a,
float *result)
{
int id = get_global_id(0);
result[id] = a[id] * a[id];
}
和
kernel dp_square (const float *a,
float *result, const unsigned int count)
{
int id = get_global_id(0);
if(id < count)
result[id] = a[id] * a[id];
}
检查 id< count 是否重要,如果内核工作项尝试处理不可用的项会发生什么?在第一个示例中它不存在的原因是否是程序员只是确保全局大小等于要处理的元素数量(这是否正常)?