使用命令行中的nvprof --metrics测量带宽的正确选项是什么?我正在使用flop_dp_efficiency来获得峰值FLOPS的百分比,但是手册中的带宽测量似乎有很多选项,我不太了解我在测量什么。例如dram_read,dram_write,gld_read,gld_write对我来说都一样。另外,如果假设两者同时发生,我应该将bandwdith报告为读写吞吐量的总和吗?
修改
根据图中的优秀答案,从设备内存到内核的带宽是多少?我想在从内核到设备内存的路径上占用最小带宽(读取+写入),这可能很大程度上是L2缓存。
我试图通过测量FLOPS和带宽来确定内核是否受计算或内存限制。
答案 0 :(得分:15)
为了理解此区域中的分析器指标,了解GPU中的内存模型是必要的。我觉得rails_12factor很有用。我已经用带有编号的箭头标记了图表,这些箭头指的是我在下面列出的编号指标(和转移方向):
the diagram published in the Nsight Visual Studio edition documentation
注意:
根据上述说明,您的问题可能仍未得到解答。然后,您需要澄清您的请求 - "您想要准确衡量什么?"但是,根据您编写的问题,您可能希望查看dram_xxx指标,如果您关心的是实际消耗的内存带宽。
此外,如果您只是想估算最大可用内存带宽,那么使用CUDA示例代码bandwidthTest
可能是获取代理测量的最简单方法。只需使用报告的设备到设备带宽数,作为代码可用的最大内存带宽的估计值。
结合上述想法,dram_utilization指标提供了一个缩放结果,表示实际使用的总可用内存带宽的部分(从0到10)。