配置文件调试或发布cuda代码?

配置文件调试或发布cuda代码?,cuda,profiler,nvvp,Cuda,Profiler,Nvvp,我一直在用nvprof和nvvp 5.5分析一个应用程序,以便对其进行优化。然而,当我分析调试和发布版本的代码时,对于一些度量/事件,如inst_replay_开销、ipc或branch_效率等,我会得到完全不同的结果 所以我的问题是:我应该分析哪个版本?发布版本还是调试版本?或者选择取决于我在寻找什么 我发现其中提到,需要一个debug-G版本来正确测量分歧分支度量,但我不确定其他度量。评测通常意味着您关心性能 如果您关心性能,那么应该分析CUDA代码的发布版本 调试版本-G将生成不同的代码,

我一直在用nvprof和nvvp 5.5分析一个应用程序,以便对其进行优化。然而,当我分析调试和发布版本的代码时,对于一些度量/事件,如inst_replay_开销、ipc或branch_效率等,我会得到完全不同的结果

所以我的问题是:我应该分析哪个版本?发布版本还是调试版本?或者选择取决于我在寻找什么


我发现其中提到,需要一个debug-G版本来正确测量分歧分支度量,但我不确定其他度量。

评测通常意味着您关心性能

如果您关心性能,那么应该分析CUDA代码的发布版本

调试版本-G将生成不同的代码,通常运行较慢。因此,我认为,在CUDA代码的调试版本上进行性能分析(包括执行时间测量、基准测试、评测等)没有什么意义


G开关关闭设备代码编译器通常可能进行的大多数优化,这对代码生成有很大影响,并且通常对性能也有很大影响。禁用优化的原因是为了方便代码调试,这是-G开关和代码调试版本的主要原因。

评测通常意味着您关心性能

如果您关心性能,那么应该分析CUDA代码的发布版本

调试版本-G将生成不同的代码,通常运行较慢。因此,我认为,在CUDA代码的调试版本上进行性能分析(包括执行时间测量、基准测试、评测等)没有什么意义


G开关关闭设备代码编译器通常可能进行的大多数优化,这对代码生成有很大影响,并且通常对性能也有很大影响。禁用优化的原因是为了方便代码调试,这是-G开关和代码调试版本的主要原因。

在您提供的链接中,我没有看到任何内容表明需要-G来正确测量发散分支度量。引用到源代码的特定探查器功能可以通过发布版本或调试版本来完成,正如这里提供的答案所述。罗伯特·克罗维拉,你是对的。链接中的源代码提供了两个选项,我没有提到这一点。谢谢。我在你提供的链接中没有看到任何东西表明需要-G来正确测量发散分支度量。引用到源代码的特定探查器功能可以通过发布版本或调试版本来完成,正如这里提供的答案所述。罗伯特·克罗维拉,你是对的。链接中的源代码提供了两个选项,我没有提到这一点。谢谢。一般来说,您希望进行完整版本的构建。如果要使用源代码,请添加-lineinfo。如果需要查看应用程序的逻辑控制流,那么-G有时比-lineinfo更有用。当使用-G时,请避免查看任何其他指标。通常,您希望进行完整版本的构建。如果要使用源代码,请添加-lineinfo。如果需要查看应用程序的逻辑控制流,那么-G有时比-lineinfo更有用。使用-G时,避免查看任何其他指标。