Mr *_*ell 27 c++ cuda visual-studio
This is an incredibly basic question, but how do I start a new CUDA project in Visual Studio 2008? I have found tons and tons of documentation about CUDA related matters, but nothing about how to start a new project. I am working with Windows 7 x64 Visual Studio 2008 C++. I would really like to find some sort of really really basic Hello World app to just get a basic program compiling and running.
Edit:
I tried your steps Tom. I setup a console app. I then deleted the default .cpp it drops in and copied over the three files from the template project just to have something to compile. When I compile that, template_gold.cpp complained about not having stdafx.h included, so i included that. Now the build fails with this:
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 ==========
Tom*_*Tom 45
注意随着CUDA Toolkit 3.2版的发布,NVIDIA现在包含带有Toolkit的规则文件而不是SDK.因此,我将这个答案分成两半,使用适用于您的Toolkit版本的正确说明.
注意这些说明适用于Visual Studio 2005和2008.对于Visual Studio 2010,请参阅此答案.
CUDA TOOLKIT 3.2及更高版本
我建议使用NVIDIA提供的NvCudaRuntimeApi.rules文件(或者NvCudaDriverApi.rules如果使用驱动程序API),它随工具包一起发布,并以友好的方式支持最新的编译器标志.就个人而言,我建议不要使用VS向导,但这只是因为我真的不认为你需要它.
规则文件(安装到Program Files\Microsoft Visual Studio 9.0\VC\VCProjectDefaults目录中)"教"Visual Studio如何编译和链接项目中的任何.cu文件到您的应用程序中.
NvCudaRuntimeApi.rules(右键单击项目,自定义构建规则,勾选相关框),请参阅注释1$(CUDA_PATH)\lib\$(PlatformName)到" 附加库目录"和" 链接器" - >"输入"添加cudart.lib到" 附加依赖项"),请参阅注释[2]和[3]$(CUDA_PATH)\include到附加包含目录),见说明[3]其他一些提示:
<sdk_install_dir>\C\doc\syntax_highlighting\visual_studio_8我还建议使用以下注册表项启用Intellisense支持(对于VS2005而不是VS2008,将9.0替换为8.0):
[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"
Run Code Online (Sandbox Code Playgroud)
顺便提一句,如果可能的话,我会提倡避免使用cutil,而是自己检查.NVIDIA不支持Cutil,它仅用于尝试将SDK中的示例集中在实际程序和算法设计上,并避免在每个示例中重复相同的事情(例如命令行解析).如果你自己编写,那么你将拥有更好的控制权并且会知道发生了什么.例如,如果函数失败,cutilSafeCall包装器会调用exit()- 真正的应用程序(而不是样本)应该可以更优雅地处理失败!
CUDA TOOLKIT 3.1及更早版本
我将使用Cuda.rulesNVIDIA提供的文件和SDK,它与工具包一起发布,并以友好的方式支持最新的编译器标志.就个人而言,我建议不要使用VS向导,但这只是因为我真的不认为你需要它.
规则文件(在SDK 的C\common目录中)"教"Visual Studio如何编译和链接项目中的任何.cu文件到您的应用程序中.
Cuda.rules(右键单击项目,自定义构建规则,浏览规则文件并确保勾选)$(CUDA_LIB_PATH)到Additional Library Directories和在Linker中 - > Input add cudart.libto Additional Dependencies)$(CUDA_INC_PATH)到附加包含目录)其他一些提示:
<sdk_install_dir>\C\doc\syntax_highlighting\visual_studio_8我还建议使用以下注册表项启用Intellisense支持(对于VS2005而不是VS2008,将9.0替换为8.0):
[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"
Run Code Online (Sandbox Code Playgroud)
顺便提一句,如果可能的话,我会提倡避免使用cutil,而是自己检查.NVIDIA不支持Cutil,它仅用于尝试将SDK中的示例集中在实际程序和算法设计上,并避免在每个示例中重复相同的事情(例如命令行解析).如果你自己编写,那么你将拥有更好的控制权并且会知道发生了什么.例如,如果函数失败,cutilSafeCall包装器会调用exit()- 真正的应用程序(而不是样本)应该可以更优雅地处理失败!
注意
NvCudaRuntimeApi.v3.2.rules.这意味着不是在%CUDA_PATH%中查找CUDA工具包,而是查看%CUDA_PATH_V3_2%,这反过来意味着您可以在系统上安装多个版本的CUDA Toolkit,并且不同的项目可以针对不同的版本.另见注释[3].LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs)或标准库函数的多重定义符号有任何错误,那么这应该是您的第一个嫌疑人.