我正在研究一个我想要介绍的CUDA应用程序。到目前为止,我所使用的只是命令行分析器nvprof
,它只显示汇总的统计信息。
我考虑使用GUI分析器,NVVP。问题是我正在运行应用程序的远程Linux节点没有任何GUI(甚至是X.org)。而且,即使我设法在远程节点上获得了一些X11堆栈,在整个分析过程中让我自己的笔记本电脑保持活着也是,这很乏味。
我尝试通过以下方式收集所有必需的信息:
nvprof --analysis-metrics -o application.nvprof ./myapplication
然后我将输出文件复制到笔记本电脑上并在NVVP中查看。但这有三个问题。
首先,当我将输出文件加载到NVVP时,我没有得到任何文件传输信息。它在NVVP窗口中根本没有显示。
其次,调用图完全失真。内核启动之间的差距至少比内核持续时间大100倍,这使得任何依赖和流分析都不可能。
最后,我的应用程序使用了大量的GPU内存。在分析期间,设备内存不足,而在独立运行期间则不然。
如何在无头节点上正确配置我的CUDA应用程序?
答案 0 :(得分:3)
NVVP支持无头节点作为一等公民。远程分析是NVVP的一个主要特性。
这种方式的工作原理是NVVP在本地支持GUI的主机上运行,并在无头机器上调用nvprof,在那里生成所需文件,复制文件并打开它们。所有这些都是透明而自动地发生的。您可以像往常一样从NVVP运行进一步的分析,它会为您重复这些步骤。
要使用远程分析,请打开NVVP,然后File->New Session
。添加连接而不是使用Local
,添加无头机器的详细信息。单击Manage...
将NVVP指向远程计算机上的工具包路径。完成此一次性设置后,输入可执行文件的路径并照常运行。
您可以在relevant documentation中阅读有关远程分析的信息。