根据开普勒白电,基于开普勒的GPU的翘曲尺寸为32,每个多处理器包含4个翘曲调度器,从所选的翘曲中选择两个独立的指令。这意味着每个时钟周期,32*4*2 = 256次计算,但多处理器只包含192个ALU。那么这些计算是如何进行的呢?
发布于 2014-05-28 16:27:40
白纸的实际措辞如下:
SMX将线程分成32组并行线程,称为warps。每个SMX具有四个翘曲调度器和八个指令分派单元,允许同时发出和执行四个翘曲。开普勒的四经纱调度器选择四个翘曲,每个周期可以发送两个独立的指令。
其解释是,在任何给定的周期中,最多可安排4经度。对于这4种翘曲中的每一种,每个翘曲都可以发送(最多)2个独立指令。“可以派遣”与“将被派遣”是不一样的。
您所指的192个ALU与单精度浮点算术运算(用于本讨论的SP单元)有关。然而,SM(X)中还有其他功能单元,如双精度浮点运算单元(DP单元)、负载/存储单元(LD/ST单元)和其他单元。参考上面链接的白皮书第8页的图表。如果给定的一组指令全部使用SP单元,则不能调度8条指令,最多可调度6条指令(32x6=192)。但是,如果指令组合包含不同类型的独立指令(例如负载、存储、SP操作等等)然后,192个SP单元的限制不一定是在任何给定周期中实际调度多少指令的决定因素。
底线是,每个周期有8个指令(2个inst/调度器x4个调度程序)是每个SM(X)的最大可能指令发出率。现实世界的代码不一定能做到这一点。在给定的周期内,完全有可能由于延迟/饥饿条件而无法发出指令。
https://stackoverflow.com/questions/23916671
复制相似问题