【发布时间】:2015-02-01 03:28:23
【问题描述】:
考虑一个执行向量加法的内核:
__kernel void vecAdd(__global double *a,
__global double *b,
__global double *c,
const unsigned int n)
{
//Get our global thread ID
int id = get_global_id(0);
//Make sure we do not go out of bounds
if (id < n)
c[id] = a[id] + b[id];
}
真的有必要将大小n 传递给函数,并检查边界吗?
我在n 上看到了相同的版本,但没有检查。哪一个是正确的?
更一般地说,我想知道如果要处理的数据大小与用户定义的 NR-Range 不同会发生什么。
是否会处理剩余的越界数据?
- 是这样,是怎么处理的?
- 如果不是,那是否意味着用户在编写内核时必须考虑边界?
OpenCL 是否指定了这些?
谢谢
【问题讨论】: