有没有人有利用零拷贝(此处参考:Default Pinned Memory Vs Zero-Copy Memory)内存模型分析CUDA应用程序性能的经验?
我有一个使用零拷贝功能的内核,在使用NVVP时,我看到了以下内容:
在平均问题大小上运行内核,我得到0.7%的指令重放开销,所以没什么大问题。所有这0.7%都是全局内存重放开销。
当我真的增加了问题大小时,我得到了95.7%的指令重放开销,所有这些都是由于全局内存重放开销。
然而,正常问题大小内核运行和非常大问题大小内核运行的全局加载效率和全局存储效率是相同的。我真的不确定这个指标的组合是什么。
我不确定的主要事情是,NVVP中的哪些统计数据将帮助我了解零复制功能发生了什么。你知道我应该看哪种类型的统计数据吗?
发布于 2012-12-14 11:08:16
出于多种原因,费米和开普勒GPU需要重放内存指令:
延迟到
零拷贝内存是200-400 cycles
由于延迟增加导致的未命中和LSU资源争用的增加,重放开销也在增加。
全局加载效率并没有增加,因为它是需要为执行的存储器指令传输的理想量与实际传输的数据量的比率。理想情况下,执行的线程从缓存线边界开始访问内存中的顺序元素(32位操作是1个缓存线,64位操作是2个缓存线,128位操作是4个缓存线)。访问零拷贝速度较慢且效率较低,但它不会增加或更改传输的数据量。
探查器的公开以下计数器:
在零拷贝的情况下,所有这些指标都应该低得多。
Nsight VSE CUDA Profiler内存实验将显示通过PCIe (零拷贝内存)访问的数据量。
https://stackoverflow.com/questions/13871449
复制相似问题