0

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

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

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

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

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

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

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

最后,我的应用程序使用了大量的 GPU 内存。在分析期间,设备内存不足,而在独立运行期间并非如此。

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

4

1 回答 1

3

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

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

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

您可以在相关文档中阅读有关远程分析的信息。

于 2017-11-08T04:54:20.467 回答