有没有人有使用零拷贝(参考此处:Default Pinned Memory Vs Zero-Copy Memory)内存模型分析CUDA应用程序性能的经验?
我有一个使用零拷贝功能的内核和NVVP我看到以下内容:
以平均问题大小运行内核我的指令重放开销为0.7%,所以没什么大不了的。所有这0.7%都是全局内存重放开销。
当我真正提升问题大小时,我得到95.7%的指令重放开销,所有这都是由于全局内存重放开销。
但是,正常问题规模内核运行和非常大的问题大小内核运行的全局负载效率和全局存储效率是相同的。我不确定如何将这些指标组合起来。
我不确定的主要问题是NVVP中的哪些统计信息可以帮助我了解零复制功能的用途。我应该关注哪种统计数据的想法?
答案 0 :(得分:5)
Fermi和Kepler GPU需要重播内存指令有多种原因:
延迟
由于延迟增加导致LSU资源的未命中和争用增加,重播开销增加。
全局负载效率不会增加,因为它是需要为执行的内存指令传输的理想数据量与实际传输的数据量之比。理想意味着执行的线程从高速缓存行边界开始访问存储器中的顺序元素(32位操作是1个高速缓存行,64位操作是2个高速缓存行,128位操作是4个高速缓存行)。访问零拷贝速度较慢且效率较低,但不会增加或更改传输的数据量。
分析器公开以下计数器:
在零拷贝情况下,所有这些指标都应该低得多。
Nsight VSE CUDA Profiler内存实验将显示通过PCIe(零拷贝内存)访问的数据量。