1
我见过的解决方案是这样的:OpenCL的,是出界将检查内核重要
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 <计数重要的检查,如果内核的工作会发生什么项目尝试处理一个不可用的项目? 在第一个例子中它可能不存在的原因是程序员只是确保全局大小等于要处理的元素数量(这是正常的)吗?
超出范围的访问是一个错误,需要消除,并且在大多数情况下它会降低执行速度 – ardiyu07