【问题标题】:How is it possible to have a Global Memory Cache Replay over 100%?全局内存缓存重放如何超过 100%?
【发布时间】:2014-01-31 12:45:52
【问题描述】:

我有一个用于基准测试的 CUDA 内核,全局内存缓存重放显示为 216.9%

这对我来说不太合理。我可以看到缓存未命中率超过 100% 的唯一方法是,如果它在多个缓存级别上丢失,但这里似乎不应该是这种情况。

对为什么会出现这种情况有任何见解吗?

【问题讨论】:

  • 我也经历过类似的事情。见this post。它们可能具有相同的起源。
  • 看起来是这样的。您能否将其发布为答案,以便我接受?

标签: caching cuda gpu gpgpu


【解决方案1】:

我也遇到过类似的问题。我的全局负载效率超过了 100%。 Here 是它的链接。由于我认为这两种现象具有相同的起源,我引用我得到的答案:

Global Load Efficiency 和 Global Store Efficiency 描述了 DRAM 访问和(L2?)缓存访问的合并效果如何。如果它们是 100%,那么你就有了完美的合并。由于超过 100% 的效率没有任何意义(你不可能比最优更好),这一定是一个错误。这个错误是由 Visual Profiler 引起的,它计算硬件事件来计算一些抽象指标。但是 GPU 没有“正确”事件来准确计算所有这些指标,因此 Visual Profiler 必须使用一些复杂的公式和“错误”事件来估计这些指标。有些指标只是粗略估计,全局负载效率和全局存储效率是其中两个。因此,如果这样的效率大于 100%,它就是一个估计错误。据我观察,在我的一些寄存器溢出内核中,全局加载效率和全局存储效率都提高了 100% 以上。这就是为什么我假设 Visual-Profiler 使用一些事件来计算这两个效率,这些事件也可能是由本地内存访问引起的。此外,GPU 只使用 32 位计数器。因此,长时间运行的内核往往会溢出这些计数器,这也会导致 Visual Profiler 显示错误的指标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    • 2016-08-21
    相关资源
    最近更新 更多