23

直接问题: 如何在 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)——我的话。现在这样做。

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

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

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

4

3 回答 3

44

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++(右键单击文件,Properties,设置Item Type
  • 添加 CUDA 运行时库(右键单击项目并选择Properties,然后在Linker -> Input添加cudart.libAdditional Dependencies
  • 然后只需构建您的项目,.cu 文件将被编译为 .obj 并自动添加到链接中

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


笔记

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

The result "" of evaluating the value "$(CudaBuildTasksPath)" of the "AssemblyFile" attribute in the element is not valid

于 2011-09-02T14:50:48.783 回答
7

此答案适用于 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 一起工作的好消息变得容易多了。

阿德

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

于 2010-10-01T05:50:03.957 回答
7

Another Good tutorial here:

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

if you get an error about '<' note this step (from a previous answer):

If you added .cu files before the build customisations, then you'll need to set the type of the .cu files to CUDA C/C++ (right-click on the file, Properties, set Item Type)

But if you follow their steps, it should work!

于 2012-01-12T03:45:15.097 回答