在CUDA profiler nvvp中,"共享/全局内存重播开销"是什么意思?怎么计算?

tro*_*ore 6 performance cuda overhead

当我们使用CUDA分析器时nvvp,有几个"开销"与指令相关,例如:

  • 分支发散开销;
  • 共享/全局内存重播开销; 和
  • 本地/全局缓存重播开销.

我的问题是:

  1. 导致这些开销的原因是什么?
  2. 他们是如何计算的?
  3. 同样,如何计算全局负载/存储效率?

附件:我发现在CUDA5工具包中打包的"CUDA Profiler用户指南"中计算这些开销的所有公式.

Ben*_*enC 2

您可以在这里找到您问题的一些答案:

为什么 CUDA Profiler 指示重放指令:82% != 全局重放 + 本地重放 + 共享重放?

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

全局内存重放 (%)由于全局内存访问而导致重放指令的百分比。计算方法为 100 *(l1 全局加载未命中)/发出的指令

本地内存重放 (%)由于本地内存访问而导致重放指令的百分比。计算方法为 100 * (l1 本地加载未命中 + l1 本地存储未命中)/发出的指令

共享存储体冲突重放 (%)由于共享存储体冲突而导致重放指令的百分比。计算方式为 100 *(l1 共享冲突)/发出的指令