如何在无头节点上分析CUDA代码?

如何在无头节点上分析CUDA代码?,cuda,profiling,nvprof,nvvp,Cuda,Profiling,Nvprof,Nvvp,我正在开发一个CUDA应用程序,我想介绍一下。到目前为止,我只使用了命令行分析器,nvprof,它只显示汇总的统计数据 我考虑过使用GUI分析器NVVP。问题是我运行应用程序的远程Linux节点没有任何GUI(甚至X.org)。此外,即使我设法在远程节点上获得了一些X11堆栈,在整个评测过程中保持我自己的笔记本电脑的活动状态也会非常单调乏味 我尝试通过以下方式收集所有需要的信息: nvprof --analysis-metrics -o application.nvprof ./myappli

我正在开发一个CUDA应用程序,我想介绍一下。到目前为止,我只使用了命令行分析器,
nvprof
,它只显示汇总的统计数据

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

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

 nvprof --analysis-metrics -o application.nvprof ./myapplication
然后我将输出文件复制到笔记本电脑上,并在NVVP中查看它。不过,这有三个问题

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

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

最后,我的应用程序使用了大量GPU内存。在分析过程中,设备内存不足,而在独立运行过程中则不是这样


如何在无头节点上正确配置CUDA应用程序?

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

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

要使用远程评测,请打开NVVP,然后
File->New Session
。添加连接,而不是使用
Local
,而是输入无头机器的详细信息。单击
Manage…
将NVVP指向远程计算机上的工具箱路径。完成此一次性设置后,输入可执行文件的路径并按常规运行


您可以在中阅读有关远程评测的信息。

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

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

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


您可以在中阅读有关远程评测的内容。

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