我一直在使用nvprof and nvvp (5.5)
分析应用程序以优化它。但是,当我分析调试(inst_replay_overhead
)和发布版本时,我会对ipc
,branch_efficiency
或-G
等某些指标/事件获得完全不同的结果。代码。
所以我的问题是:我应该分析哪个版本?发布或调试版本?或者选择取决于我在寻找什么?
我发现CUDA - Visual Profiler and Control Flow Divergence表示需要调试(-G
)版本才能正确衡量不同的分支指标,但我不确定其他指标。
答案 0 :(得分:4)
分析通常意味着您关心绩效。
如果您关心性能,则应分析CUDA代码的发布版本。
调试版本(-G)将生成不同的代码,通常运行速度较慢。由于这个原因,我认为在CUDA代码的调试版本上进行性能分析(包括执行时间测量,基准测试,分析等)没有什么意义。
-G开关关闭设备代码编译器通常可能进行的大多数优化,这对代码生成有很大影响,并且通常对性能有很大影响。禁用优化的原因是为了便于代码调试,这是-G开关和代码调试版本的主要原因。