我正在努力解决的问题。我们的大多数命令行应用程序,当从Visual Studio运行时,我们喜欢强制用户按一个键退出,所以我们可以在调试时看到Visual Studio中的输出。
这与分析不起作用。解决这个问题的一种方法是确定探查器是否正在运行。
CUDA分析器的API相当有限:https://docs.nvidia.com/cuda/cuda-runtime-api/group__CUDART__PROFILER.html
它似乎支持:
cudaProfilerInitialize
cudaProfilerStart
cudaProfilerStop
但无法确定它是否真的在运行?
嗯,一个丑陋且肯定次优的解决方案就是在正在运行的进程中搜索nvprof ...
在Linux上,您可以使用readproc()
执行此操作:
#include <proc/readproc.h>
proc_t* readproc(PROCTAB *PT, proc_t *return_buf);
有关如何使用readproc.h
中的函数的更多信息,请查看:
在SuperUser.com上,特别是在this answer。
注意:不要忘记nvprof可能正在运行但不会分析您的进程。