我知道nvvp
和nvprof
的存在,但是由于各种原因,nvprof
不想使用涉及大量共享库的应用程序。nvidia-smi
可以挂接到驱动程序以找出正在运行的内容,但我找不到一种很好的方法来nvprof
附加到正在运行的进程。
有一个标志--profile-all-processes
它实际上给了我一条消息"NVPROF正在分析进程12345",但没有进一步打印出来。我正在使用 CUDA 8。
在这种情况下,如何获得 CUDA 内核的详细性能细分?
正如注释所建议的那样,您只需确保在要分析的进程之前启动 CUDA 分析器(现在是 NSight Systems 或 NSight Compute,不再是 nvprof(。例如,您可以将其配置为在系统启动时运行。
您无法分析应用程序与它是"涉及大量共享库的应用程序"无关 - 分析工具可以很好地分析此类应用程序。
我也一直在寻找过程附加解决方案,但没有找到现有的工具。
一个可能的方向是使用较低的 CUDA API 来构建工具或集成到您的工具中。见库普提:https://docs.nvidia.com/cupti/r_main.html#r_dynamic_detach