我正在阅读一些结果。在那里我看到他们使用了5120个工作组和1的本地大小。我对OpenCl的知识有限,我想知道这个陈述是否正确:
从GPU可以看出,第一个测试有5120个工作组 每个1个工作项。这意味着执行的线程 并行仅限于其中的计算单元数量 机。例如,如果GPU有20个计算单元,那么只能有 最多20个并行工作的线程。虽然当 本地大小增加到2,运行线程数量的两倍 同时
通过阅读OpenCl上的一些信息,它似乎是对的。虽然我需要第二个意见。
答案 0 :(得分:1)
<强>更新即可。嗯,nat chouf的评论是对的,我把这个问题理解为“同时在飞行中”,而不是“同时在物理上执行”。
正如我所写,在一个计算单元中,可以在给定时间安排多个工作组。这种“飞行中”工作组的数量受到每个计算单元上可用资源(本地存储器,寄存器等)的限制。
在现有实现中(afaik),计算单元将从计算单元中的所有块中的相同工作组中选择工作项的块(扭曲/波前)以供执行。该块的一个“指令”被插入管道中(可能需要几个周期,每个“指令”可能对应于每个工作项中的几个操作),然后选择另一个块。
所以,是的,如果工作组大小为1,则每个计算单元只能同时物理启动1个工作项。但是,可能所有工作项目可能同时在GPU中进行。