我有一个小的CUDA程序,我想用nvprof
来评测它。问题是,我想以
- 当我运行
nvprof my_prog
时,它将调用cudaProfilerStart
和cudaProfilerStop
- 当我运行
my_prog
时,它不会调用上面的任何API,因此可以消除分析开销
因此,问题变成了如何让我的代码在运行nvprof
时意识到它的存在,而不需要额外的命令行参数。
您是否测量并验证了当未连接nvprof时,cudaProfiler启动/停止调用会引入可测量的开销?我非常怀疑情况是否如此。
如果这是一个问题,您可以使用#ifdef
指令将这些调用从您的发布版本中排除。
没有办法检测nvprof是否正在运行,因为如果被分析的应用程序"感知"到探查器并更改其行为,那么这就违背了分析的目的。