我正在开发一个我想要分析的 CUDA 应用程序。到目前为止,我使用的只是命令行分析器,它只nvprof
显示汇总的统计信息。
我考虑过使用 GUI 分析器 NVVP。问题是我运行应用程序的远程 Linux 节点没有任何 GUI(甚至是 X.org)。此外,即使我设法在远程节点上获得了一些 X11 堆栈,在整个分析过程中保持我自己的笔记本电脑处于活动状态也是非常乏味的。
我尝试通过以下方式收集所有需要的信息:
nvprof --analysis-metrics -o application.nvprof ./myapplication
然后我将输出文件复制到我的笔记本电脑上并在 NVVP 中查看。但是,这有三个问题。
首先,当我将输出文件加载到 NVVP 时,我没有得到任何文件传输信息。它根本没有显示在 NVVP 窗口中。
其次,调用图完全扭曲。内核启动之间的间隔至少比内核持续时间大 100 倍,这使得任何依赖关系和流分析都是不可能的。
最后,我的应用程序使用了大量的 GPU 内存。在分析期间,设备内存不足,而在独立运行期间并非如此。
我应该如何在无头节点上正确分析我的 CUDA 应用程序?