OpenCl声明,对还是错?

OpenCl声明,对还是错?,opencl,Opencl,我在看一些结果。在那里,我看到他们使用了5120个工作组,本地规模为1。我对OpenCl的了解有限,我想知道这句话是否正确: 从GPU可以看出,第一个测试有5120个工作组,其中 每个工作项1个。这意味着在中执行的线程 并行计算仅限于计算机中的计算单元数量 机器。例如,如果一个GPU有20个计算单元,那么只有 最多20个并行工作的线程。虽然当 本地大小增加到2,是运行线程数量的两倍 同时 从OpenCl的一些信息来看,这似乎是正确的。尽管我需要第二个意见。更新。嗯,纳特·乔夫的评论是对的,我把这

我在看一些结果。在那里,我看到他们使用了5120个工作组,本地规模为1。我对OpenCl的了解有限,我想知道这句话是否正确:

从GPU可以看出,第一个测试有5120个工作组,其中 每个工作项1个。这意味着在中执行的线程 并行计算仅限于计算机中的计算单元数量 机器。例如,如果一个GPU有20个计算单元,那么只有 最多20个并行工作的线程。虽然当 本地大小增加到2,是运行线程数量的两倍 同时


从OpenCl的一些信息来看,这似乎是正确的。尽管我需要第二个意见。

更新。嗯,纳特·乔夫的评论是对的,我把这个问题理解为“同时飞行”而不是“同时执行”

正如我所写的,在一个计算单元中可以在给定的时间安排几个工作组。这种“正在运行”的工作组的数量受到每个计算单元上可用资源(本地内存、寄存器等)的限制

在现有的实现(afaik)中,一个计算单元将从同一个工作组中挑选一个工作项块(扭曲/波前),在计算单元中飞行的所有块中执行。将此块的一条“指令”插入管道(可能需要几个周期,每条“指令”可能对应于每个工作项中的几个操作),然后拾取另一个块


所以,是的,如果工作组大小为1,则每个计算单元只会同时物理启动1个工作项。但所有工作项可能同时在GPU中运行。

更新。嗯,纳特·乔夫的评论是对的,我把这个问题理解为“同时飞行”而不是“同时执行”

正如我所写的,在一个计算单元中可以在给定的时间安排几个工作组。这种“正在运行”的工作组的数量受到每个计算单元上可用资源(本地内存、寄存器等)的限制

在现有的实现(afaik)中,一个计算单元将从同一个工作组中挑选一个工作项块(扭曲/波前),在计算单元中飞行的所有块中执行。将此块的一条“指令”插入管道(可能需要几个周期,每条“指令”可能对应于每个工作项中的几个操作),然后拾取另一个块

所以,是的,如果工作组大小为1,则每个计算单元只会同时物理启动1个工作项。但所有工作项可能同时在GPU中运行