我正在尝试使用ubuntu上的CUDA nsight分析器为内存带宽利用率和GPU加速应用程序计算吞吐量利用率的两个整体度量.该应用程序在Tesla K20c GPU上运行.
我想要的两个测量值在某种程度上与此图中给出的值相当:
问题是这里没有给出确切的数字,更重要的是我不知道如何计算这些百分比.
内存带宽利用率
Profiler告诉我,我的GPU的最大全局内存带宽为208 GB/s.
这是指设备内存BW还是全局内存BW?它是全球性的,但第一个对我来说更有意义.
对于我的内核,分析器告诉我设备内存带宽是98.069 GB/s.
假设最大208 GB/s参考设备内存我可以简单地计算内存带宽利用率为90.069/208 = 43%?请注意,此内核多次执行,无需额外的CPU-GPU数据传输.因此系统BW并不重要.
计算吞吐量利用率
我不确定将Compute Throughput Utilization放入数字的最佳方法是什么.我最好的猜测是使用每循环指令到每循环最大指令比.剖析器告诉我最大IPC是7(见上图).
首先,这究竟意味着什么?每个多处理器有192个内核,因此最多有6个活动warp.这不意味着最大IPC应该是6?
分析器告诉我,我的内核已发出IPC = 1.144并执行IPC = 0.907.我应该计算计算利用率为1.144/7 = 16%或0.907/7 = 13%或者没有这些?
这两个测量(内存和计算利用率)是否给出了我的内核使用资源的效率的第一印象?还是应该包含其他重要指标?
附加图表