Opencl AMD波前与工作组

Opencl AMD波前与工作组,opencl,gpgpu,Opencl,Gpgpu,我对AMD波前的术语和OpenCL的工作组大小有点困惑。 我发现不同的来源有不同的说法 我的问题是:AMDs GCN技术的波前大小是多少?根据这个问题:opencl上的一个工作组至少应该有多大才能不浪费占用空间 我从amd得到的信息是,GCN的波前大小是16。我一次可以在CU上运行4个波前,每个CU最多有40个飞行中波前。因此,我的意思是,在opencl中,一个工作组的大小至少应该是16 但常见的信息(例如在or中)是波前大小为64,根据该工作组大小,如果大于64的倍数,则至少应为64安。这也与

我对AMD波前的术语和OpenCL的工作组大小有点困惑。 我发现不同的来源有不同的说法

我的问题是:AMDs GCN技术的波前大小是多少?根据这个问题:opencl上的一个工作组至少应该有多大才能不浪费占用空间

我从amd得到的信息是,GCN的波前大小是16。我一次可以在CU上运行4个波前,每个CU最多有40个飞行中波前。因此,我的意思是,在opencl中,一个工作组的大小至少应该是16

但常见的信息(例如在or中)是波前大小为64,根据该工作组大小,如果大于64的倍数,则至少应为64安。这也与我的内核上的测量结果相匹配,即workgroupsize为64时,我的性能最高,而低于64的性能则更差


非常感谢您的澄清。

您说错了。再读一遍。SIMD单元有16个工作项,波前大小为64个工作项。以下是重要的引语:

第3页:

在GCN中,每个CU包括4个单独的SIMD单元,用于矢量处理。这些SIMD单元中的每一个都在16个工作区内同时执行单个操作 项目,但每个项目都可以在单独的波前工作

第5页:

这对于波阵面控制流至关重要;例如,比较将为波阵面中的64个工作项中的每一个生成结果


如果工作组大小为16,amd gpu的最小硬件simd宽度将浪费%75,因为它们每个都是64宽的。你每立方米浪费48个单位。波前被应用到同一个区域,而不是分布到所有的铜。是的,这就是我从大多数来源得到的。但是关于link nr.1,它说在cu中有4个16宽的SIMD,每个SIMD可以有10个波前在飞行中。对我来说,这意味着波前是16,而不是64。请记住,我的问题特别是关于amd的GCN技术。当您有一个16宽度的工作组时,您只使用一个16宽度的simd。其他3个等待空闲,而所有波阵面都在单个simd上发出,所以我认为这不是动态并行。我想你不太明白我的问题是什么。在GCN,波前大小是64而不是16,你从哪里得到的信息?好的,你说得对。但我的下一个问题是:当一个波前是64宽而不是16宽时,每个Vector16 SIMD怎么可能有10个波前在飞行中?每个16宽SIMD在4个时钟周期内处理一个64宽的波前。在每个时钟周期,指令调度器可以从CU上的一个波前向四个SIMD单元之一发出一条矢量指令。因此,超过4个周期后,每个SIMD都会收到一条指令,调度程序将返回到启动状态。基于资源,飞行中有10个波形-每个SIMD 10个程序计数器寄存器,每个CU 40个。我做了几次演讲,试图解释这方面的问题,也许他们会有所帮助: