1

我正在阅读一些结果。在那里我看到他们使用了 5120 个工作组和 1 的本地大小。我对 OpenCl 的了解有限,我想知道这个说法是否正确:

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

从阅读有关 OpenCl 的一些信息来看,这似乎是正确的。虽然我需要第二个意见。

4

1 回答 1

1

更新。嗯,nat chouf 的评论是对的,我将问题理解为“同时飞行”而不是“同时物理执行”。

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

在现有的实现 (afaik) 中,计算单元将从同一工作组中选择一个工作项块 (warp/wavefront) 来执行,在计算单元中的所有正在运行的块中。这个块的一个“指令”被插入到流水线中(可能需要几个周期,每个“指令”可能对应于每个工作项中的几个操作),然后再选择另一个块。

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

于 2013-02-25T21:37:17.540 回答