为什么CUDA Profiler会指示重播说明:82%!=全局重播+本地重播+共享重播?

时间:2011-08-25 08:48:40

标签: cuda gpu gpgpu

我从CUDA Profiler获得了信息。我很困惑为什么 重播指令!= Grobal内存重放+本地内存重放+共享银行冲突重放?

请参阅我从Profiler获得的以下信息:

Replayed Instructions(%): 81.60
Global memory replay(%): 21.80
Local memory replays(%): 0.00
Shared bank conflict replay(%): 0.00
你可以帮我解释一下吗?还有其他案例导致重播指令吗?

1 个答案:

答案 0 :(得分:5)

因为SM可以根据其他因素重放指令,例如不同的分支逻辑。

因此,我可以假设60%的代码由于分支而重新发布,20%由于全局内存而重新发布。你可以发一个片段吗?

从Cuda 4.0 Profiler的F1帮助菜单中:

  

重播说明(%)这给出了百分比   内核执行期间重放的指令。重播说明   是指令数量之间的差异   实际上是由硬件发出的指令数量   由内核执行。理想情况下,这应该为零。这是   计算为100 *(发出指令 - 执行指令)/   发出的指示

     

全局内存重播(%)重播说明的百分比   由于全局内存访问而导致的。计算结果为100 *(l1   全局负载未命中)/发布指令

     

本地内存重播(%)重播指令所造成的百分比   由于本地内存访问。计算结果为100 *(l1 local   加载未命中+ l1本地商店未命中)/发出指令

     

共享银行冲突重播(%)重播的百分比   由于共享内存库冲突导致的指令。这是   计算为100 *(l1共享冲突)/发出指令