0

我是 Visual Studio 2010 的新手,因为我习惯于使用 Linux 作为操作系统使用 nvcc 编译我的 CUDA 代码。顺便说一句,在这篇文章和 NVIDIA 开发者专区论坛的一些帖子中,我已经阅读了有关在 Visual Studio 中正确编译的警告(调试/发布模式,请参阅链接了解两者之间的区别)以正确使用 NVIDIA Visual Profiler。在我(较差的)理解中,Visual Studio 会在“调试”模式下自动编译,但对于成功的配置文件,“发布”模式是必要的。

我的(简单)问题是:

1) 如何从“调试”模式切换到“发布”模式?使用 Properties -> Configuration Properties 并选择“Release”而不是“Active(Debug)”就足够了吗?另外,我注意到每次我想重建项目时都必须重复选择。

2) 这足以正确使用 Visual Profiler 吗?

非常感谢您提前。

4

2 回答 2

2

1)你在错误的地方从调试切换到发布。您使用的设置仅用于选择要查看或编辑的构建设置。您应该使用Build | Configuration Manager或(更容易)工具栏中的Solution Configurations下拉框Standard。如果您没有看到Standard工具栏,请右键单击菜单的工具栏区域,然后在此处选择它。您会发现现在不必为每个构建重新选择设置。

2) CUDA 编译器即使在调试模式下也会积极优化。我不知道您使用哪种配置是否重要。两者都应该工作。您可以尝试看看是否得到任何不同的结果。

于 2013-01-09T21:37:37.367 回答
1

有关如何设置配置的信息,请参阅 Roger Dahl 的回答。

有几种形式的分析。

性能分析

这绝对应该通过在 CUDA 内核上启用优化来完成。禁用优化和指定调试信息会比 CPU 执行更多的操作,但它会对代码进行其他修改(堆栈溢出检查),这会影响计数器。

源级分析

这可以在调试或发布版本上完成。Nsight 3.0 CUDA Profiler 具有源级实验,将显示每个 C 源、PTX 或 SASS 行的统计信息。CUDA 5.0 Visual Profiler 支持代码相关实验,但不会显示每一行的结果(仅显示有问题的行)。禁用优化将导致 SASS 到 PTX 到 C 代码映射的行信息更加准确。对于许多分析案例,这很好。但是,如果您想了解每个 C 行的代码生成,那么您应该启用全面优化并仔细查看 SASS 代码,并且仅使用 C 源代码和 PTX 作为指南。

为了获得 C 源代码级别的相关性,您需要使用生成完整调试信息的默认调试配置或使用启用 -lineinfo 的自定义配置。可以使用以下步骤启用此选项:

  1. 打开解决方案资源管理器
  2. 右键单击您的 .cu 文件或项目文件
  3. 执行Properties命令
  4. 在左窗格中选择树节点Configuration Properties | CUDA C/C++ | Device
  5. 在右窗格中更改Generate Line Number InformationYes

在 CUDA 5.0 中,-lineinfo 对代码生成有几个小的影响,因此不建议在您的发布配置中保持启用此功能。

于 2013-01-10T04:20:21.887 回答