nvvp(视觉)和 nvprof(命令行)的输出有什么不同吗?
Is there any difference in the output of nvvp (visual) and nvprof (command line)?
为了测量 CUDA 程序的 metrics/events,我尝试使用如下命令行:
nvprof --metrics <<metric_name>>
我还在 Visual profiler nvvp
上测量了相同的指标。我注意到我得到的值没有差异。
当我选择 achieved_occupancy
这样的指标时,我注意到输出有所不同。但这随每次执行而变化,这可能就是为什么我每次 运行 都会得到不同的结果,无论我使用的是 nvvp
还是 nvprof
.
问题:
我的印象是 nvvp
和 nvprof
完全一样,而且 nvvp
只是构建在 nvprof
之上的 GUI,以便于采用。但是我得到了这个建议:
Always use the visual profiler. Never use the command line.
另外,this question 说:
I do not want to use the command line profiler as I need the global load/store efficiency, replay and DRAM utilization, which are much more visible in the visual profiler.
除了 'dynamic' 指标,如 achieved_occupancy
,我从未注意到结果有任何差异。那么,这个建议有效吗? nvprof
的工作方式是否存在某种缺陷?我想知道在命令行形式上使用可视化分析器的优势,如果有的话。
更具体地说,是否有 nvprof
给出错误结果的指标?
注:
我的问题与this or this不一样,因为这些问的是nvvp
和Nsight之间的区别。
我不确定为什么有人会给你建议:
Never use the command line.
假设 "command line" 你实际上是指 nvprof
。 这不明智。 在某些情况下使用 nvprof
是有意义的。 (请注意,如果您实际上是指 命令行分析器 ,那么该建议可能有点明智,但仍然是偏好问题。它与 nvprof
分开,因此有一个单独的学习曲线。我个人会使用 nvprof
而不是 the command line profiler。)
nvvp
在后台使用 nvprof
,以便完成 所有 的测量工作。然而 nvvp
可能会以各种有趣的方式组合测量指标,例如便于引导分析。
nvprof
不应该给你 "wrong results",如果出于某种原因它给了你,那么 nvvp
应该同样容易受到此类错误的影响。
使用 nvvp
与 nvprof
可能只是品味或偏好的问题。
许多人会喜欢 GUI 的便利性。 nvvp
GUI 提供了 "Guided Analysis" 模式,而 nvprof
没有。如果您浏览 documentation,我相信可以创建一个详尽的其他差异列表。但是无论 nvvp
做什么,它都会使用 nvprof
来完成。它没有其他方法来查询设备的分析器数据——它使用 nvprof
.
我会在不方便使用 nvvp
时使用 nvprof
,也许当我 运行 在难以或不可能启动 nvvp
的计算集群节点上时.如果您正在进行有针对性的分析(测量单个指标,例如 shared_replay_overhead
- nvprof
肯定比启动 GUI 和 运行 会话更快),或者如果您正在通过大量运行收集用于表格生成的指标。
在大多数其他情况下,我个人会使用nvvp
。时间线功能本身比尝试从 nvprof --print-gpu-trace ...
的输出中 assemble 脑中的序列要方便得多,后者与时间线的信息基本相同。
为了测量 CUDA 程序的 metrics/events,我尝试使用如下命令行:
nvprof --metrics <<metric_name>>
我还在 Visual profiler nvvp
上测量了相同的指标。我注意到我得到的值没有差异。
当我选择 achieved_occupancy
这样的指标时,我注意到输出有所不同。但这随每次执行而变化,这可能就是为什么我每次 运行 都会得到不同的结果,无论我使用的是 nvvp
还是 nvprof
.
问题:
我的印象是 nvvp
和 nvprof
完全一样,而且 nvvp
只是构建在 nvprof
之上的 GUI,以便于采用。但是我得到了这个建议:
Always use the visual profiler. Never use the command line.
另外,this question 说:
I do not want to use the command line profiler as I need the global load/store efficiency, replay and DRAM utilization, which are much more visible in the visual profiler.
除了 'dynamic' 指标,如 achieved_occupancy
,我从未注意到结果有任何差异。那么,这个建议有效吗? nvprof
的工作方式是否存在某种缺陷?我想知道在命令行形式上使用可视化分析器的优势,如果有的话。
更具体地说,是否有 nvprof
给出错误结果的指标?
注:
我的问题与this or this不一样,因为这些问的是nvvp
和Nsight之间的区别。
我不确定为什么有人会给你建议:
Never use the command line.
假设 "command line" 你实际上是指 nvprof
。 这不明智。 在某些情况下使用 nvprof
是有意义的。 (请注意,如果您实际上是指 命令行分析器 ,那么该建议可能有点明智,但仍然是偏好问题。它与 nvprof
分开,因此有一个单独的学习曲线。我个人会使用 nvprof
而不是 the command line profiler。)
nvvp
在后台使用 nvprof
,以便完成 所有 的测量工作。然而 nvvp
可能会以各种有趣的方式组合测量指标,例如便于引导分析。
nvprof
不应该给你 "wrong results",如果出于某种原因它给了你,那么 nvvp
应该同样容易受到此类错误的影响。
使用 nvvp
与 nvprof
可能只是品味或偏好的问题。
许多人会喜欢 GUI 的便利性。 nvvp
GUI 提供了 "Guided Analysis" 模式,而 nvprof
没有。如果您浏览 documentation,我相信可以创建一个详尽的其他差异列表。但是无论 nvvp
做什么,它都会使用 nvprof
来完成。它没有其他方法来查询设备的分析器数据——它使用 nvprof
.
我会在不方便使用 nvvp
时使用 nvprof
,也许当我 运行 在难以或不可能启动 nvvp
的计算集群节点上时.如果您正在进行有针对性的分析(测量单个指标,例如 shared_replay_overhead
- nvprof
肯定比启动 GUI 和 运行 会话更快),或者如果您正在通过大量运行收集用于表格生成的指标。
在大多数其他情况下,我个人会使用nvvp
。时间线功能本身比尝试从 nvprof --print-gpu-trace ...
的输出中 assemble 脑中的序列要方便得多,后者与时间线的信息基本相同。