【发布时间】:2018-10-28 10:18:51
【问题描述】:
我当然知道nvvp 和nvprof 的存在,但由于各种原因nvprof 不想使用我的应用程序,该应用程序涉及大量共享库。 nvidia-smi 可以连接到驱动程序以找出正在运行的内容,但我找不到让 nvprof 附加到正在运行的进程的好方法。
有一个标志 --profile-all-processes 实际上确实给了我一条消息“NVPROF 正在分析过程 12345”,但没有进一步打印出来。我正在使用 CUDA 8。
在这种情况下,我如何获得 CUDA 内核的详细性能细分?
【问题讨论】:
-
没有一个 CUDA 分析器支持附加到我知道的已经运行的进程。
nvprof可以分析您已经使用--profile-all-processes发现的独立进程,但是必须在其他进程开始之前发出这个nvprof命令(以便它在后台运行),并且它必须仍然在运行其他进程结束。有了这个附带条件,您应该能够使用nvprof分析一个单独的进程。使用--profile-all-processes,不会再打印任何内容,但会在其他进程终止时写入分析器文件。 -
@RobertCrovella 我可以在启动进程之前运行
--profile-all-processes,但我无法确定分析器文件的写入位置!例如,如果我使用--log-file log%p.txt,每个进程的日志文件都会出现在与我运行nvprof相同的目录中,但仅包含单个“Profile process ...”行。 -
您确实需要指定输出文件名,而且我很确定您必须包含 %p 以便它可以用进程号识别文件名。除此之外,您需要在写入任何分析结果之前让应用程序完成(除非您在应用程序前面调用
cudaProfilerStop()),即使在应用程序完成之后,如果要处理大量的分析数据,它写入文件可能需要几分钟或更长时间。 -
这是我遵循的步骤: 1. 使用
nvprof --profile-all-processes --log-file log%p.log &启动后台日志记录 如果您想使用单独的进程来启动事物,则与号是可选的。此时出现了一个(空)日志文件log5699.log。 2. 我运行了我一直在使用python t4.py开发的 numba cuda 应用程序。运行大约需要 10 秒。完成后,会出现一个名为log5704.log的新 日志文件,该文件具有来自进程5704(即python 进程)的预期分析器输出。 3. 我用kill 5699终止了后台分析。 -
请不要删除这个。 RC 关于如何使用
--profile-all-processes运行的 cmets 很有用。