要测量CUDA程序的指标/事件,我尝试使用命令行,如:
nvprof --metrics <<metric_name>>
我还在Visual Profiler nvvp
上测量了相同的指标。我注意到我得到的值没有差别。
当我选择像achieved_occupancy
这样的指标时,我注意到输出的差异。但这会随着每次执行而变化,这可能是我每次运行时得到不同结果的原因,无论我使用的是nvvp
还是nvprof
。
问题:
我认为nvvp
和nvprof
完全相同,nvvp
只是构建在nvprof
之上的GUI,以方便使用。但是我得到了这个建议:
始终使用视觉分析器。切勿使用命令行。
此外,this question说:
我不想使用命令行分析器,因为我需要全局加载/存储效率,重放和DRAM利用率,这在视觉分析器中更加明显。
除achieved_occupancy
之类的“动态”指标外,我从未发现结果存在任何差异。那么,这个建议有效吗? nvprof
的工作方式是否存在某种缺陷?我想知道在命令行表单中使用可视化分析器的优点,如果有的话。
更具体地说,是否存在nvprof
给出错误结果的指标?
注意:
答案 0 :(得分:3)
我不确定为什么有人会给你建议:
切勿使用命令行。
通过&#34;命令行&#34;你实际上意味着nvprof
。 这是不明智的。在某些情况下,使用nvprof
是有意义的。 (请注意,如果你实际上是指命令行分析器,那么这个建议可能有些明智,虽然仍然是一个偏好问题。它与nvprof
是分开的,因此有一个单独的学习曲线。我个人会使用nvprof
代替the command line profiler。)
nvvp
使用了nvprof
,以便进行所有测量工作。然而,nvvp
可以以各种有趣的方式组合测量的度量,例如促进指导分析。
nvprof
不应该给你&#34;错误的结果&#34;,如果它出于某种原因,那么nvvp
应该同样容易受到此类错误的影响。
使用nvvp
与nvprof
可能仅仅是品味或偏好。
许多人都喜欢GUI的便利性。 nvvp
GUI提供了一个&#34; Guided Analysis&#34; nvprof
没有的模式。如果你通过documentation,我确信可以创建一个详尽的其他差异列表。但无论nvvp
做什么,它都会使用nvprof
。它没有替代方法来查询设备以查找探查器数据 - 它使用nvprof
。
如果使用nvprof
不方便,我会使用nvvp
,也许当我在计算群集节点上运行时,很难或无法启动{{1} }}。如果您正在进行目标性能分析(测量单个度量,例如nvvp
- shared_replay_overhead
肯定比启动GUI和运行会话更快),或者您正在收集指标,您也可以使用它表格生成大量运行。
在大多数其他情况下,我个人会使用nvprof
。时间轴功能本身比尝试从nvvp
的输出组装头部序列更方便,这与时间轴基本相同。