AMD wavefront与工作组

use*_*003 4 gpgpu opencl

关于OpenCL的AMD波前和工作组大小,我有点困惑.我发现不同的来源都做了不同的陈述.

我的问题是:AMD的GCN技术的波前大小是多少,并且根据这个:opencl上的工作组至少应该有多大不浪费占用率.

我从amd 这个文件中得到的信息是,GCN的波前大小是16.我可以一次在CU上运行4个波前,每个铜最多有40个飞行中的波前.所以我暗示的是,工作组在opencl中应至少为16.

但是常见的信息(例如在这个或者这个中)是wavefrontsize是64并且根据这个workgroupsize应该至少64并且如果更高64的倍数.这也是与我的内核上的meassurements匹配的,这是使用workgroupsize 64我获得了最高性能,对于64以下的所有内容,它变得更糟.

非常感谢您的澄清.

doq*_*tor 6

你搞错了.请再次仔细阅读本文档.SIMD单元有16个工作项,波前大小为64个工作项.以下是重要的引用:

第3页:

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

第5页:

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

  • 每个16宽SIMD在4个时钟周期内处理一个64宽波前.在每个时钟周期,指令调度器可以从CU上的一个有效波前发出一个向量指令到四个SIMD单元之一.因此,超过4个周期,每个SIMD都会发出一条指令并且调度程序返回到开始状态.根据资源有10个波在飞行中 - 每个SIMD 10个程序计数器寄存器,每个CU 40个.我做了几个试图解释这方面的讨论,也许他们会有所帮助:http://www.leehowes.com/files/talks/201203-Howes-UTAustin_Lecture_February2012_AMD.pdf (3认同)