gpt4 book ai didi

c++ - CUDA 探查器 : Calculate memory and compute utilization

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:52 26 4
gpt4 key购买 nike

我正在尝试使用 ubuntu 上的 CUDA nsight 分析器为我的 GPU 加速应用程序的内存带宽利用率和计算吞吐量利用率建立两个总体测量值。该应用程序在 Tesla K20c GPU 上运行。

我想要的两个测量值在某种程度上与此图中给出的测量值相当: Figure one

问题是这里没有给出确切的数字,更重要的是我不知道这些百分比是如何计算的。

内存带宽利用率

Profiler 告诉我我的 GPU 的最大全局内存带宽为 208 GB/s。

enter image description here

这是指设备内存 BW 还是全局内存 BW?它说的是全局,但第一个对我来说更有意义。

对于我的内核,分析器告诉我设备内存带宽为 98.069 GB/s。

enter image description here

假设最大 208 GB/s 是指设备内存,那么我可以简单地将内存带宽利用率计算为 90.069/208 = 43% 吗?请注意,此内核会在没有额外的 CPU-GPU 数据传输的情况下执行多次。因此,系统 BW 并不重要。

计算吞吐量利用率

我不确定将计算吞吐量利用率转化为数字的最佳方法是什么。我最好的猜测是使用每周期指令与最大每周期指令的比率。探查器告诉我最大 IPC 是 7(见上图)。

首先,这到底是什么意思?每个多处理器有 192 个内核,因此最多有 6 个事件 warp。那不是说最大 IPC 应该是 6 吗?

探查器告诉我,我的内核发出了 IPC = 1.144 并执行了 IPC = 0.907。我应该将计算利用率计算为 1.144/7 = 16% 或 0.907/7 = 13% 还是两者都不是?

这两个测量值(内存和计算利用率)是否给出了关于我的内核使用资源的效率的充分第一印象?还是应该包括其他重要指标?

附加图表

enter image description here

最佳答案

注意:我将尝试更新此答案以获取更多详细信息。我不认为在 Visual Profiler 报告中可以轻松看到计算的所有单独组件。

计算利用率

这是逻辑管道的管道利用率:内存、控制流和算术。 SM 有许多未记录的执行管道。如果您查看指令吞吐量图表,您可以在较高水平上确定如何计算利用率。您可以阅读 kepler 或 maxwell 架构文档以获取有关管道的更多信息。 CUDA 核心是整数/单精度 float 学管道的营销术语。

此计算并非基于 IPC。它基于管道利用率和发布周期。例如,如果您发出 1 条指令/周期(从不双重发出),您可以达到 100% 的利用率。如果您以最大速率发出 double 指令(取决于 GPU),您也可以达到 100%。

内存带宽利用率

探查器计算 L1、TEX、L2 和设备内存的利用率。显示最高值。数据路径利用率非常高但带宽利用率非常低的情况很可能发生。

还应计算内存延迟限制原因。很容易让程序受内存延迟限制但不受计算利用率或内存带宽限制。

关于c++ - CUDA 探查器 : Calculate memory and compute utilization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28138494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com