nvvp(visual)和nvprof(命令行)的输出有什么不同吗?

时间:2016-06-04 07:09:10

标签: cuda gpu nvidia nvvp nvprof

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

nvprof --metrics <<metric_name>>

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

当我选择像achieved_occupancy这样的指标时,我注意到输出的差异。但这会随着每次执行而变化,这可能是我每次运行时得到不同结果的原因,无论我使用的是nvvp还是nvprof

问题:

我认为nvvpnvprof完全相同,nvvp只是构建在nvprof之上的GUI,以方便使用。但是我得到了这个建议:

  

始终使用视觉分析器。切勿使用命令行。

此外,this question说:

  

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

achieved_occupancy之类的“动态”指标外,我从未发现结果存在任何差异。那么,这个建议有效吗? nvprof的工作方式是否存在某种缺陷?我想知道在命令行表单中使用可视化分析器的优点,如果有的话。

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

注意:

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

1 个答案:

答案 0 :(得分:3)

我不确定为什么有人会给你建议:

  

切勿使用命令行。

通过&#34;命令行&#34;你实际上意味着nvprof这是不明智的。在某些情况下,使用nvprof是有意义的。 (请注意,如果你实际上是指命令行分析器,那么这个建议可能有些明智,虽然仍然是一个偏好问题。它与nvprof是分开的,因此有一个单独的学习曲线。我个人会使用nvprof代替the command line profiler。)

nvvp使用了nvprof,以便进行所有测量工作。然而,nvvp可以以各种有趣的方式组合测量的度量,例如促进指导分析。

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

使用nvvpnvprof可能仅仅是品味或偏好。

许多人都喜欢GUI的便利性。 nvvp GUI提供了一个&#34; Guided Analysis&#34; nvprof没有的模式。如果你通过documentation,我确信可以创建一个详尽的其他差异列表。但无论nvvp做什么,它都会使用nvprof。它没有替代方法来查询设备以查找探查器数据 - 它使用nvprof

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

在大多数其他情况下,我个人会使用nvprof。时间轴功能本身比尝试从nvvp的输出组装头部序列更方便,这与时间轴基本相同。