0

为了测量 CUDA 程序的指标/事件,我尝试使用如下命令行:

nvprof --metrics <<metric_name>>

我还在 Visual profiler 上测量了相同的指标nvvp。我注意到我得到的值没有区别。

当我选择像achieved_occupancy. 但这会随着每次执行而变化,这可能就是为什么我每次运行它都会得到不同结果的原因,无论我使用的是nvvp还是nvprof.

问题:

我的印象是nvvpnvprof完全一样,那nvvp只是一个建立在上面的GUI,nvprof以便于使用。但是我得到了这个建议:

始终使用视觉分析器。永远不要使用命令行。

另外,这个问题说:

我不想使用命令行分析器,因为我需要全局加载/存储效率、回放和 DRAM 利用率,这些在可视分析器中更加明显。

除了 '动态' 指标achieved_occupancy,我从未注意到结果有任何差异。那么,这个建议有效吗?工作方式是否存在某种缺陷nvprof?我想知道在命令行表单上使用可视化分析器的优势(如果有的话)。

更具体地说,是否存在nvprof给出错误结果的指标?

笔记:

我的问题与thisthis不同,因为这些是在询问nvvp与 Nsight 之间的区别。

4

1 回答 1

4

我不知道为什么有人会给你建议:

永远不要使用命令行。

通过“命令行”假设您实际上是指nvprof. 这是不明智的。 在某些情况下使用nvprof. (请注意,如果您实际上是指命令行分析器,那么该建议可能有点明智,尽管仍然是一个偏好问题。它与nvprof因此有一个单独的学习曲线是分开的。我个人会使用nvprof而不是命令行分析器。)

nvvp在引擎盖下使用nvprof,以完成其所有测量工作。然而nvvp,可以以各种有趣的方式组合测量的度量,例如以促进引导分析。

nvprof不应该给你“错误的结果”,如果它出于某种原因,那么nvvp应该同样容易受到此类错误的影响。

使用nvvpvs.nvprof可能只是口味或偏好的问题。

许多人会喜欢 GUI 的便利性。GUI 提供了nvvp“引导分析”模式,nvprof但没有。如果您仔细阅读文档,我确信可以创建一份详尽的其他差异列表。但无论做什么nvvp,它都会使用nvprof. 它没有替代方法来查询设备以获取探查器数据 - 它使用nvprof.

我会在使用nvprof不便时使用nvvp,也许当我在难以或不可能启动的计算集群节点上运行时nvvp。如果您正在进行有针对性的分析(测量单个指标,例如shared_replay_overhead-nvprof肯定比启动 GUI 和运行会话更快),或者如果您正在为大量运行收集用于表格生成的指标,您也可以使用它。

在大多数其他情况下,我个人会使用nvvp. 时间线功能本身比试图在你的头脑中组装一个序列要方便得多,nvprof --print-gpu-trace ...它的输出与时间线的信息基本相同。

于 2016-06-04T12:21:35.840 回答