如何在Visual Studio 2008中启动新的CUDA项目?

时间:2010-01-12 02:04:37

标签: c++ visual-studio cuda

这是一个非常基本的问题,但如何在Visual Studio 2008中启动新的CUDA项目?我已经找到了大量关于CUDA相关问题的文档,但没有关于如何开始新项目的文档。我正在使用Windows 7 x64 Visual Studio 2008 C ++。我真的很想找到一些非常基本的Hello World应用程序来获得一个基本的程序编译和运行。

编辑:

我尝试了汤姆的步骤。我设置了一个控制台应用。然后我删除了默认的.cpp,它从模板项目中删除并复制了三个文件,只是为了编译。当我编译它时,template_gold.cpp抱怨没有包含stdafx.h,所以我包括了。现在构建失败了:

1>------ Build started: Project: CUDASandbox, Configuration: Debug x64 ------
1>Compiling...
1>template_gold.cpp
1>Linking...
1>LIBCMT.lib(crt0.obj) : error LNK2019: unresolved external symbol main referenced in function __tmainCRTStartup
1>D:\Stuff\Programming\Visual Studio 2008\Projects\CUDASandbox\x64\Debug\CUDASandbox.exe : fatal error LNK1120: 1 unresolved externals
1>Build log was saved at "file://d:\Stuff\Programming\Visual Studio 2008\Projects\CUDASandbox\CUDASandbox\x64\Debug\BuildLog.htm"
1>CUDASandbox - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

4 个答案:

答案 0 :(得分:45)

答案 1 :(得分:4)

真是个好问题!!对于那里的所有CUDA文档,我一直认为这是一个明显的遗漏...事实上,我很高兴我找到了这篇文章,因为在使用CUDA很长一段时间后,我仍然没有找到了一种正式的,正确的方式让VS从头开始制作CUDA程序。

当我需要启动新的CUDA程序时,我总是只复制并修改SDK目录中的“模板”示例。这可能不是您正在寻找的,因为它没有重新开始,但 是一种快速的方法,可以在VS中使用所有正确的项目/文件来使用支持CUDA的项目名...

  1. 从SDK中复制“模板”示例,并重命名目录 - 目录中唯一的必需内容是源代码和VS .sln和.vcproj文件
  2. 重命名.sln和.vcproj文件
  3. 在文本编辑器中打开.sln文件,并在文件的第3行重命名项目变量和 .vcproj 文件名
  4. 在文本编辑器中打开.vcproj文件,并在文件的前几行重命名名称 RootNamespace 变量
  5. 使用VS打开项目,然后打开属性页(右键单击解决方案资源管理器窗格中的项目名称,选择“属性”)
  6. 更改属性页中的输出文件名称(在配置属性 - >链接器 - >常规下)...在更改文件名之前,我选择“所有配置” 来自配置下拉和“x64”来自平台下拉,因为我在64位系统上
  7. 更改属性页中的程序数据库文件名称(在配置属性 - >链接器 - >调试下)...在更改文件名之前,我选择“Debug” “x64”在下拉列表中。

答案 2 :(得分:3)

  • 安装CUDA VS向导。它将设置VS并将CUDA项目添加到“新项目”菜单。
  • 确保安装了x64编译器(必须在VS安装期间进行检查)。
  • 检查您是否拥有x64库,包含,nvcc目录和搜索路径。
  • 使用CUDA模板创建新项目。
  • 将项目类型更改为x64,将CUDA设置更改为Native(如果您有启用nv cuda的卡)或其他模拟。
  • 模板将创建自定义构建规则,使用默认编译器编译带有nvcc和其他文件的.cu文件。
  • 如果,vs正在尝试使用C / C ++编译器编译.cu文件,请在解决方案资源管理器中单击该文件并禁用该文件的编译(文件图标上的红点)

有关在VS2008上安装CUDA向导的其他信息,请参见herehere

[编辑]
如果您不想使用向导,则必须手动设置CUDA lib / include / nvcc路径,并为每个新的CUDA程序添加自定义构建规则。有关其他信息,请参阅Tom's Answer。

答案 3 :(得分:3)