Visual studio 2010 通过命令行构建CUDA应用程序所需的最小可能完整的源文件和批处理文件集?
假设:Visual studio 2010 通过命令行构建CUDA应用程序所需的最小可能完整的源文件和批处理文件集?,visual-studio-2010,command-line,build,cuda,Visual Studio 2010,Command Line,Build,Cuda,假设: Windows 7操作系统 Visual Studio Express 2010 SP1刚刚安装(未使用任何*.rules或其他任何内容进行修改) 已安装CUDA SDK 已安装GPU计算SDK 清理/清空环境变量集(因此,我们需要运行vcvar和其他任何东西) 正确的答案是: 批处理文件内容 源(和项目,如果需要)文件内容(包括至少一个要实际使用的.cu文件) (回答不可避免的“为什么你不是……”评论) 默认设置对我来说已经不起作用了,我的选择是尝试这个问题的方式 (特别尖锐的
- Windows 7操作系统
- Visual Studio Express 2010 SP1刚刚安装(未使用任何
或其他任何内容进行修改)*.rules
- 已安装CUDA SDK
- 已安装GPU计算SDK
- 清理/清空环境变量集(因此,我们需要运行vcvar和其他任何东西)
- 批处理文件内容
- 源(和项目,如果需要)文件内容(包括至少一个要实际使用的
文件).cu
有人吗?:) 无论我最初的问题是需求是否奇异,事实证明有一种相当简单的方法可以满足这些需求,包括:
- 不依赖VS
文件及其复杂性*proj
- 与使用默认GPU计算SDK设置构建的
和cutil
实用程序库(手动构建)(即没有shrutils
文件)的二进制兼容性,我认为也不会带来任何问题)*proj
- 对环境设置没有隐含的依赖性(只需要几个明确指定的
组件(即CUDA\u PATH(或其他任何组件--CUDA\u PATH\u 4\u 1?)和朋友可以离开您的全局环境),见下文)PATH
- 对构建目录必须驻留的位置没有限制(相对于CUDA toolkit或GPU SDK分发目录或其他内容)
- 不需要适当地部署(甚至修补)VS项目规则或MSBuild扩展,也不依赖于VC10、NVIDA GPU SDK和CUDA toolkit的安装顺序(我相信,后者中的一个实际使用规则将CUDA项目规则部署到VC10,并将CUDA构建扩展部署到MSBuild)
- (具备以上所有能力)能够正确(我相信)构建GPU计算SDK示例
*proj
文件,位于:
- Win7 x86
- VS2010 SP1
- CUDA工具包4.1
- NVIDIA GPU SDK 4.1
“C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.1\C\src\template”
下(还有其他文件,但不需要):
- 模板_gold.cpp
- template.cu
- template_kernel.cu
cuda_build.bat
)是(假设您需要SDK示例大量使用的cutil
和shrutil
):
要构建,请将.cpp
和.cu
文件列表传递到上面的批处理文件:
cuda_build.bat template_gold.cpp template.cu
要或多或少以静默方式构建,而不保留任何中间文件,请从cuda\u build.bat
中删除--verbose--keep
键
只要使用本文中命令的第一部分设置了路径,就可以运行生成的a.exe(即,任何必要的.dll
将已经在路径上)
请注意(如果您感兴趣),开始使用的最低环境仅为(在shell命令中,根据您的设置进行相应更改),甚至更小(我没有尝试过,但链接器至少在没有临时目录的情况下失败):
另外,要构建一个更大的示例,应该遵循类似的步骤,但如果在项目中引用到要构建的源文件列表中,则应添加(或复制)源文件,如rendercheck_gl.cpp
。我已经用nbody
、fluidsGL
、simpleGL
和oceanFFT
示例项目对其进行了测试,并且效果良好。(particle
example在asch
library header inclusion上中断——但通过.*proj文件编译也会以同样的方式失败——在我看来,某些模板魔术与VC10不兼容)
希望,任何对这个话题感兴趣并且像我一样不喜欢MS IDE配置混乱的人都会喜欢这个: 我不知道你想要什么。如果您安装了VS2010和CUDA工具包(我想这就是您所说的“CUDA SDK”),那么您不需要其他任何东西。您应该能够直接从命令提示符打开
Visual Studio命令提示符
,并使用nvcc
进行编译,而无需任何操作else@talonmies好的,VS命令提示符实际上就是我在运行vsvars
后得到的,对吗?那么CUDA路径,包括,LIB和DLL呢?我在哪里可以找到一组最低限度的.cpp
和.cu
文件来编译成一个工作应用程序?nvcc已经知道在哪里可以找到编译可运行应用程序所需的所有CUDA头和库。至于在哪里找到要编译的内容-使用您选择的搜索引擎/SDK示例之一/数百个包含代码的Stackoverflow问题/答案之一。@Talonmes..例如->?(即,哪些既包含C++又包含.Cu代码,同时又小又完整)?所有CUDA代码都是用C++编译器编译的,所以即使是看起来像C的代码也可以。随机,中的代码如何?不要在自己的程序中使用cutil。@Eric谢谢,我已经得到了提示。问题是,cutil(和灌木)在NVIDIA示例中使用,因此,如果一个人从它们开始,他别无选择,只能使用它们来构建工作。
nvcc --verbose --keep --cl-version 2010 --use-local-env ^
-Xcompiler "/EHsc /nologo /Od /Zi /MT" ^
-DWIN32 -D_MBCS ^
-L"%cudatoolkit%\lib\win32" ^
-L"%gpusdk%\C\common\lib\win32" ^
-L"%gpusdk%\shared\lib\Win32" ^
-I"%cudatoolkit%\include" ^
-I"%gpusdk%\C\common\inc" -I"%gpusdk%\shared\inc" ^
-I. ^
-lcuda -lcudart -lcufft ^
-lcutil32 -lshrutils32 ^
-lopengl32 -lfreeglut -lglew32 ^
-lkernel32 -luser32 -lgdi32 ^
%*
cuda_build.bat template_gold.cpp template.cu
set Path=C:\Windows\System32
set SystemDrive=C:
set SystemRoot=C:\Windows
set TEMP=C:\Users\A90B~1\AppData\Local\Temp
set TMP=C:\Users\A90B~1\AppData\Local\Temp