我如何知道 CUDA 程序中是否存在 nvprof?

How do I know the presence of nvprof inside CUDA program?

我有一个小的 CUDA 程序,我想用 nvprof 进行分析。问题是我想以

这样的方式编写程序

问题因此变成了如何让我的代码在 运行 时知道 nvprof 的存在,而不需要额外的命令行参数。

您是否测量并验证了 cudaProfilerStart/Stop 调用在未附加 nvprof 时引入了可测量的开销?我非常怀疑是这种情况。

如果这是一个问题,您可以使用 #ifdef 指令从您的发布版本中排除这些调用。

无法检测 nvprof 是否 运行,因为这违背了分析的目的 - 如果被分析的应用程序 "senses" 分析器并改变了它的行为。