是否可以通过编程确定CUDA探查器是否正在运行?

是否可以通过编程确定CUDA探查器是否正在运行?,cuda,profiler,Cuda,Profiler,我想解决的问题。我们的大多数命令行应用程序在Visual Studio中运行时,我们喜欢强制用户按一个键退出,以便在调试时可以在Visual Studio中看到输出 这根本不适用于分析。解决此问题的一种方法是确定探查器是否正在运行 CUDA探查器的API相当有限: 它似乎支持: 初始化cudaProfilerInitialize 启动cudaprofilestart 停止cudaProfilerStop 但是没有办法确定它是否真的在运行?好吧,一个丑陋的、肯定是次优的解决方案就是在运行的进

我想解决的问题。我们的大多数命令行应用程序在Visual Studio中运行时,我们喜欢强制用户按一个键退出,以便在调试时可以在Visual Studio中看到输出

这根本不适用于分析。解决此问题的一种方法是确定探查器是否正在运行

CUDA探查器的API相当有限:

它似乎支持:

  • 初始化
    cudaProfilerInitialize
  • 启动
    cudaprofilestart
  • 停止
    cudaProfilerStop

但是没有办法确定它是否真的在运行?

好吧,一个丑陋的、肯定是次优的解决方案就是在运行的进程中搜索nvprof

在Linux上,您可以使用
readproc()

#包括
proc_t*readproc(PROCTAB*PT,proc_t*return_buf);
有关如何使用
readproc.h
中函数的更多信息,请参阅:

在SuperUser.com上,尤其是在


注意:别忘了nvprof可能正在运行,但没有分析您的流程。

是的,我们在windoze上运行,但基本原则适用。对于我想到的用例,稍微慢一点是可以的。显然很笨重,但它能工作。等待另一个答案。。。
#include <proc/readproc.h>

proc_t* readproc(PROCTAB *PT, proc_t *return_buf);