我有一个 CUDA 程序,其中在多次迭代和内存访问中,一个长数组的块读取元素的线程几乎完全合并。当我分析时,全局负载效率超过 100%(在 119% 和 187% 之间,具体取决于输入)。全局负载效率的描述是“全局内存负载吞吐量与所需的全局内存负载吞吐量之比”。这是否意味着我经常使用二级缓存并且我的内存访问从中受益?
我的 GPU 是 GeForce GTX 780(Kepler 架构)。
我在这里的 NVIDIA 论坛上问了这个问题。我引用我得到的答案:
据我观察,在我的一些寄存器溢出内核中,全局加载效率和全局存储效率都提高了 100% 以上。这就是为什么我假设 Visual-Profiler 使用一些事件来计算这两个效率,这些事件也可能是由本地内存访问引起的。此外,GPU 只使用 32 位计数器。因此,长时间运行的内核往往会溢出这些计数器,这也会导致 Visual Profiler 显示错误的指标。”