C++ 如何在VisualStudio2008中启动新的CUDA项目?
这是一个非常基本的问题,但是我如何在VisualStudio2008中启动一个新的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 ========== 1> ----构建已启动:项目:CUDASandbox,配置:调试x64------ 1> 编译。。。 1> 模板_gold.cpp 1> 链接。。。 1> LIBCMT.lib(crt0.obj):错误LNK2019:函数\uu tmaincrstartup中引用的未解析外部符号main 1> D:\Stuff\Programming\Visual Studio 2008\Projects\CUDASandbox\x64\Debug\CUDASandbox.exe:致命错误LNK1120:1未解析的外部 1> 生成日志保存在“文件://d:\Stuff\Programming\visualstudio 2008\Projects\CUDASandbox\CUDASandbox\x64\Debug\BuildLog.htm”中 1> CUDASandbox-2个错误,0个警告 ======生成:0成功,1失败,0最新,0跳过==========C++ 如何在VisualStudio2008中启动新的CUDA项目?,c++,visual-studio,cuda,C++,Visual Studio,Cuda,这是一个非常基本的问题,但是我如何在VisualStudio2008中启动一个新的CUDA项目呢?我已经找到了大量关于CUDA相关事宜的文档,但对于如何启动一个新项目却一无所知。我正在使用Windows 7 X64 Visual Studio 2008 C++。我真的很想找到一些非常基本的Hello World应用程序来编译和运行一个基本的程序 编辑: 我试过你的脚步,汤姆。我安装了一个控制台应用程序。然后,我删除了默认的.cpp文件,并从模板项目中复制了三个文件,以便进行编译。当我编译时,te
- 安装CUDA VS向导。它将设置VS并将CUDA项目添加到“新建项目”菜单中。
- 确保已安装x64编译器(必须在VS安装期间进行检查)。
- 检查搜索路径中是否有x64 libs、includes、nvcc dir和
- 使用CUDA模板创建新项目。
- 将项目类型更改为x64,将CUDA设置更改为本机(如果您有启用nv CUDA的卡)或其他设置
- 该模板将创建自定义生成规则,用nvcc编译.cu文件,用默认编译器编译其他文件
- 如果vs试图使用C/C++编译器编译.cu文件,请在解决方案资源管理器中单击该文件并禁用该文件的编译(文件图标上的红点)
如果不想使用向导,则必须手动设置CUDA lib/include/nvcc路径,并向每个新CUDA程序添加自定义生成规则。有关如何执行此操作的更多信息,请查看Tom的答案。注意随着CUDA工具包3.2版的发布,NVIDIA现在将规则文件包含在工具包中,而不是SDK中。因此,我将这个答案分为两半,请使用适用于您的工具包版本的正确说明 注意这些说明对Visual Studio 2005和2008有效。有关Visual Studio 2010,请参见
CUDA工具包3.2及更高版本 我建议使用NVIDIA提供的
NvCudaRuntimeApi.rules
文件(或NvCudaDriverApi.rules
如果使用驱动程序API),该文件随工具包一起发布,并以友好的方式支持最新的编译器标志。就个人而言,我建议不要使用VS向导,但这只是因为我真的认为您不需要它
规则文件(安装在Program Files\Microsoft Visual Studio 9.0\VC\VCProjectDefaults
目录中)“教”Visual Studio如何编译项目中的任何.cu文件并将其链接到应用程序中
- 使用标准MS向导创建新项目(例如,空控制台项目)
- 在.c或.cpp文件中实现主机(串行)代码
- 在.cu文件中实现包装器和内核
- 添加
(右键单击项目,自定义生成规则,勾选相关框),请参见备注NvCudaRuntimeApi.rules
- 添加CUDA运行时库(右键单击项目并选择属性,然后在链接器->常规添加
到附加库目录,并在链接器->输入添加$(CUDA\u路径)\lib\$(PlatformName)
到附加依赖项),请参见注释[2]和[3]cudart.lib
- (可选)将CUDA include文件添加到搜索路径,如果在.cpp文件(而不是.cu文件)中包含任何CUDA文件,则这是必需的(右键单击项目并选择属性,然后在C/C++->常规中将
添加到其他包含目录),请参见注释[3]$(CUDA\u路径)\include
- 然后只需构建项目,.cu文件将编译为.obj并自动添加到链接中
- 将代码生成更改为使用静态加载的C运行时来匹配CUDA运行时;右键单击项目并选择Properties,然后在C/C++->Code Generation中将运行时库更改为/MT(或/MTd进行调试,在这种情况下,您需要在运行时API->Host->Runtime Library中镜像该库),请参见注释[4]
- 使用SDK附带的usertype.dat文件启用语法高亮显示,请参阅
\C\doc\syntax\u highlighting\visual\u studio\u 8
cutilSafeCall
wrapper调用exit()
,那么实际应用程序(与示例相反)可能会更优雅地处理失败
CUDA工具包3.1及更早版本 我
[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Languages\Language Services\C/C++]
"NCB Default C/C++ Extensions"=".cpp;.cxx;.c;.cc;.h;.hh;.hxx;.hpp;.inl;.tlh;.tli;.cu;.cuh;.cl"
[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Languages\Language Services\C/C++]
"NCB Default C/C++ Extensions"=".cpp;.cxx;.c;.cc;.h;.hh;.hxx;.hpp;.inl;.tlh;.tli;.cu;.cuh;.cl"