6

当我们使用CUDAprofilernvvp时,有几个与指令相关的“开销”,例如:

  • 分支分歧开销;
  • 共享/全局内存重播开销;和
  • 本地/全局缓存重播开销。

我的问题是:

  1. 是什么导致了这些间接费用?以及
  2. 它们是如何计算的?
  3. 同样,如何计算全局加载/存储效率?

附件:我在 CUDA5 工具包中的“CUDA Profiler 用户指南”中找到了计算这些开销的所有公式。

4

1 回答 1

2

您可以在此处找到您的问题的一些答案:

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

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

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

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

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

于 2012-12-10T18:18:34.543 回答