【发布时间】:2020-10-02 06:42:35
【问题描述】:
出于爱好目的,我使用 OpenCL 已经有一段时间了。我想知道是否有人可以解释我应该如何查看全局和本地工作空间。我已经玩了一段时间了,但我似乎无法理解它。
我有这段代码,内核全局工作大小为8,本地工作大小为4
__kernel void foo(__global int *bar)
{
bar[get_global_id(0)] = get_local_id(0);
}
bar 中的结果如下所示:
{0, 1, 2, 3, 0, 1, 2, 3, 4}
由于我使用的工作尺寸,我知道为什么会这样。但我似乎无法理解我应该如何看待这个问题。
这是否意味着有 4 个线程在本地工作,8 个在全局工作,所以我总共有 4 * 8 个线程在运行?如果是这样,是什么让这 4 人在当地工作的特别之处?
或者这是否意味着内核的主体只有两个计数器?一个来自本地,一个来自全球,但这有什么意义呢?
我知道我可能有点含糊,我的问题可能看起来很愚蠢。但是我不知道如何才能更优化地使用它以及我应该如何看待它?
【问题讨论】:
标签: opencl