我有一个CUDA内核,我正在进行基准测试,全局内存缓存重播显示为216.9%
这对我来说没有多大意义。我可以看到超过100%的缓存未命中的唯一方法是,如果它在多个缓存级别上丢失,但这似乎不应该是这种情况。
有关为何会出现这种情况的任何见解?
答案 0 :(得分:2)
类似的问题发生在我身上。我的全球负载效率超过100%。 Here是指向它的链接。既然我认为这两种现象都有相同的起源,我引用我得到的答案:
全局负载效率和全局存储效率描述了DRAM访问和(L2?)高速缓存访问的合并效果如何。如果它们是百分之百,那么你就有了完美的凝聚力。由于效率高于100%没有任何意义(你不能比最佳效果好),这必然是一个错误。此错误是由Visual Profiler引起的,它会计算硬件事件以计算一些抽象度量标准。但GPU没有“正确”的事件来准确计算所有这些指标,因此Visual Profiler必须通过使用一些复杂的公式和“错误”事件来估计这些指标。有一些指标只是粗略估计,全球负载效率和全球存储效率是其中两个。因此,如果这样的效率大于100%,则是估计误差。据我所知,全局负载效率和全局存储效率在我的一些寄存器溢出内核中都增加了100%以上。这就是为什么我假设Visual-Profiler使用一些事件(也可能是由本地内存访问引起)来计算这两种效率。此外,GPU仅使用32位计数器。因此,长时间运行的内核往往会溢出这些计数器,这也会导致Visual Profiler显示错误的指标。