【问题标题】:How to profile CUDA code on a headless node?如何在无头节点上分析 CUDA 代码?
【发布时间】:2017-11-07 21:34:11
【问题描述】:

我正在开发一个我想要分析的 CUDA 应用程序。到目前为止,我使用的只是命令行分析器nvprof,它只显示汇总统计信息。

我考虑过使用 GUI 分析器 NVVP。问题是我运行应用程序的远程 Linux 节点没有任何 GUI(甚至是 X.org)。此外,即使我设法在远程节点上获得了一些 X11 堆栈,在整个分析过程中保持我自己的笔记本电脑处于活动状态也是非常乏味的。

我尝试通过以下方式收集所有需要的信息:

 nvprof --analysis-metrics -o application.nvprof ./myapplication

然后我将输出文件复制到我的笔记本电脑上并在 NVVP 中查看。但是,这有三个问题。

首先,当我将输出文件加载到 NVVP 时,我没有得到任何文件传输信息。在 NVVP 窗口中根本不显示。

其次,调用图完全扭曲。内核启动之间的间隔至少比内核持续时间大 100 倍,这使得任何依赖关系和流分析都不可能。

最后,我的应用程序使用了大量的 GPU 内存。在分析期间,设备内存不足,而在独立运行期间不会出现这种情况。

我应该如何在无头节点上正确分析我的 CUDA 应用程序?

【问题讨论】:

  • 您描述的方法是正确的方法。 nvprof->nvvp 方法存在潜在限制,仅在使用 nvvp 时可能不存在。我不知道您所说的“文件传输信息”究竟是什么意思,但是当您使用nvprof 捕获指标时,还有其他类型的数据没有被收集。研究 nvprof 文档并了解它对捕获的内容有限制,具体取决于您选择的模式。我从未见过您报告的第二个问题。对于第三个问题:限制 profiling 的范围。
  • 并非所有可以在 nvvp 中完成的事情都可以通过将 nvprof 导入到 nvvp 中来完成。例如,引导分析非常有限。

标签: cuda profiling nvprof nvvp


【解决方案1】:

NVVP 支持无头节点作为一等公民。远程分析是 NVVP 的主要功能。

它的工作方式是 NVVP 在本地启用 GUI 的主机上运行,​​并在无头机器上调用 nvprof,在那里生成所需的文件,复制文件并打开它们。所有这些都是透明而自动地发生的。您可以像往常一样从 NVVP 运行进一步分析,它会为您重复这些步骤。

要使用远程分析,请打开 NVVP,然后打开 File->New Session。添加一个连接而不是使用Local,添加无头机器的详细信息。单击Manage... 将NVVP 指向远程机器上的工具包路径。完成这一一次性设置后,输入可执行文件的路径并照常运行。

您可以在relevant documentation 中阅读有关远程分析的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 2019-04-25
    • 2018-07-21
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多