【问题标题】:How do I start a CUDA app in Visual Studio 2010?如何在 Visual Studio 2010 中启动 CUDA 应用程序?
【发布时间】:2011-04-16 06:44:43
【问题描述】:

直接问题:如何在 Visual Studio 2010 中创建一个简单的 hello world CUDA 项目?

背景:我写过 CUDA 内核。我非常熟悉 Visual Studio 2005 中的 .vcproj 文件——手动调整了几个。在 VS 2005 中,如果我想构建一个 CUDA 内核,我添加一个自定义构建规则,然后显式定义 nvcc 调用来构建文件。

我已迁移到 Win 7 和 VS 2010,因为我真的很想试用 nSight。我安装了 nSight 1.5。但这是我完全迷失的地方。如果我像以前一样继续,nvcc 报告它只支持 msvc 8.0 和 9.0。但该网站明确声明它支持 VS 2010。

我在其他地方读到,我还需要安装 VS 2008 (msvc 9.0)——我的话。现在就这样做。

但我猜我的问题至少有一部分源于本土定制构建工具规范。 Several websites 谈论将 *.rules 文件添加到构建中,但我收集到这仅适用于 VS 2008。在“构建自定义”下,我看到 CUDA 3.1 和 3.2,但是当我将内核添加到他们没有建造的项目。 Another website 宣称关键是三个文件:Cuda.props Cuda.xml Cuda.targets,但它没有说明如何或在何处添加这些文件——或者我会赌一下我只是不明白网站上引用的注释。

所以有谁知道如何在 VS 2010 中创建一个构建 CUDA 内核的简单项目——使用 nSight 1.5 设置或 NvCudaRuntimeApi.v3.2.rules 文件附带CUDA 3.2 RC?

提前致谢!我会提供赏金,但我总共只有 65 分。

【问题讨论】:

  • 评论而不是回应,因为我不知道这是否会有所帮助。您可能会发现此链接信息丰富:forums.nvidia.com/index.php?showtopic=161096
  • 我看过这个,但我犹豫是否将补丁应用到 nSight 1.5,因为这个补丁最后一次更新是在 2010 年 5 月。有人在最新的 RC 上使用过它吗?

标签: c++ visual-studio-2010 cuda projects-and-solutions nsight


【解决方案1】:

CUDA 工具包 4.0 及更高版本

构建自定义文件(安装在Program Files\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations 目录中)“教”Visual Studio 如何编译项目中的任何 .cu 文件并将其链接到应用程序中。如果您选择跳过安装自定义,或者如果您在 CUDA 之后安装了 VS2010,您可以稍后按照Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\extras\visual_studio_integration 中的说明添加它们。

  • 使用标准 MS 向导创建一个新项目(例如,一个空的控制台项目)
  • 在 .c 或 .cpp 文件中实现您的主机(串行)代码
  • 添加 NVIDIA 构建自定义(右键单击项目,构建自定义,勾选相关的 CUDA 框)
  • 如果使用 CUDA 4.0,请参见注释 1
  • 在 .cu 文件中实现包装器和内核
  • 如果您在构建自定义之前添加了.cu 文件,那么您需要将.cu 文件的类型设置为CUDA C/C++(右键单击该文件,属性 , 设置物品类型)
  • 添加 CUDA 运行时库(右键单击项目并选择 Properties,然后在 Linker -> Input 中将 cudart.lib 添加到 Additional Dependencies)
  • 然后只需构建您的项目,.cu 文件将被编译为 .obj 并自动添加到链接中

顺便说一句,如果可能的话,我会提倡避免皮肤,而不是自己检查。 Cutil 不受 NVIDIA 支持,它只是用于尝试使 SDK 中的示例专注于实际的程序和算法设计,并避免在每个示例中重复相同的内容(例如命令行解析)。如果你自己写,那么你将有更好的控制,并且会知道发生了什么。例如,如果函数失败,cutilSafeCall 包装器会调用 exit() - 一个真实的应用程序(而不是示例)可能应该更优雅地处理失败!


注意

  1. 仅对于 CUDA 4.0,您可能需要将 this fix 应用于构建自定义。此补丁修复了以下消息:

评估元素中“AssemblyFile”属性的值“$(CudaBuildTasksPath)”的结果“”无效

【讨论】:

    【解决方案2】:

    此答案适用于 CUDA 3.2,从 4.0 开始,CUDA 直接支持 VC 10 编译器,有关更多信息,请参阅其他答案

    您需要安装 VS 2008 或 6.1 Windows SDK。这是因为 NSight 1.5 RC 或 CUDA 3.2 SDK 在底层使用了 VC 9 编译器。我已经成功安装了 2008,并被告知它应该可以与 SDK 一起使用,但还没有尝试过。

    使用 NSight 1.5 和/或 CUDA 3.2 SDK,您应该不需要使用任何自定义构建规则。我去过那里,很痛苦。随着最新的构建,一切都消失了:

    • 创建您的 VC++ 项目。
    • 向其中添加 .CU 文件。
    • 在解决方案资源管理器中选择项目文件。
    • 打开项目 |构建自定义...
    • 检查“CUDA 3.2 (.targets, .props)" 自定义。
    • 在您的项目中选择一个 .CU 文件,然后按 Alt-Enter 以显示其属性。
    • 确保项目类型设置为“CUDA C/C++”

    它应该只是构建。让我知道这是否有帮助,如果您遇到问题,因为这是凭记忆的。

    让 CUDA 与 VS 2010 一起工作变得更加容易的好消息。

    阿德

    顺便说一句:我会更新我的博文。

    【讨论】:

    • 我接受您的回答,但由于我暂时退回到 VS 2008,我没有机会确认您的回答。我会在周末这样做!非常感谢!
    • 我做了同样的事情,几周前才回到 VS 2010(对于 GTC)。如果您有问题,它应该可以让我知道。
    • 此信息不再适用,CUDA 4.0 及更高版本原生支持 VS2010(即您不再需要 VS2008)。
    【解决方案3】:

    这里的另一个好教程:

    http://www.stevenmarkford.com/installing-nvidia-cuda-with-visual-studio-2010/

    如果您收到有关“

    如果您在构建自定义之前添加了 .cu 文件,那么您需要将 .cu 文件的类型设置为 CUDA C/C++(右键单击文件,属性,设置项目类型)

    但如果你按照他们的步骤,它应该工作!

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 2011-05-09
    相关资源
    最近更新 更多