配置文件调试或发布 cuda 代码?
Profile debug or release cuda code?
我一直在使用 nvprof and nvvp (5.5)
分析应用程序以优化它。但是,当我分析调试 (-G
) 和代码的发布版本。
所以我的问题是:我应该分析哪个版本?发布版还是调试版?或者选择取决于我在寻找什么?
我发现 CUDA - Visual Profiler and Control Flow Divergence 指出需要调试 (-G
) 版本才能正确测量发散分支指标,但我不确定其他指标。
分析通常意味着您关心性能。
如果您关心性能,您应该分析 CUDA 代码的发布版本。
调试版本(-G)会生成不同的代码,通常运行速度较慢。在我看来,出于这个原因,在 CUDA 代码的调试版本上进行性能分析(包括执行时间测量、基准测试、分析等)毫无意义。
-G 开关关闭了设备代码编译器通常可能进行的大多数优化,这对代码生成有很大影响,通常也对性能有很大影响。禁用优化的原因是为了方便代码调试,这是使用 -G 开关和代码调试版本的主要原因。
我一直在使用 nvprof and nvvp (5.5)
分析应用程序以优化它。但是,当我分析调试 (-G
) 和代码的发布版本。
所以我的问题是:我应该分析哪个版本?发布版还是调试版?或者选择取决于我在寻找什么?
我发现 CUDA - Visual Profiler and Control Flow Divergence 指出需要调试 (-G
) 版本才能正确测量发散分支指标,但我不确定其他指标。
分析通常意味着您关心性能。
如果您关心性能,您应该分析 CUDA 代码的发布版本。
调试版本(-G)会生成不同的代码,通常运行速度较慢。在我看来,出于这个原因,在 CUDA 代码的调试版本上进行性能分析(包括执行时间测量、基准测试、分析等)毫无意义。
-G 开关关闭了设备代码编译器通常可能进行的大多数优化,这对代码生成有很大影响,通常也对性能有很大影响。禁用优化的原因是为了方便代码调试,这是使用 -G 开关和代码调试版本的主要原因。