Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 通过命令行构建CUDA应用程序所需的最小可能完整的源文件和批处理文件集?_Visual Studio 2010_Command Line_Build_Cuda - Fatal编程技术网

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
    文件)
(回答不可避免的“为什么你不是……”评论)

默认设置对我来说已经不起作用了,我的选择是尝试这个问题的方式

(特别尖锐的问题)

或者这根本不可能,我们注定要探索GUI复选框暴力风格


有人吗?:)

无论我最初的问题是需求是否奇异,事实证明有一种相当简单的方法可以满足这些需求,包括:

  • 不依赖VS
    *proj
    文件及其复杂性
  • 与使用默认GPU计算SDK设置构建的
    cutil
    shrutils
    实用程序库(手动构建)(即没有
    *proj
    文件)的二进制兼容性,我认为也不会带来任何问题)
  • 对环境设置没有隐含的依赖性(只需要几个明确指定的
    PATH
    组件(即CUDA\u PATH(或其他任何组件--CUDA\u PATH\u 4\u 1?)和朋友可以离开您的全局环境),见下文)
  • 对构建目录必须驻留的位置没有限制(相对于CUDA toolkit或GPU SDK分发目录或其他内容)
  • 不需要适当地部署(甚至修补)VS项目规则或MSBuild扩展,也不依赖于VC10、NVIDA GPU SDK和CUDA toolkit的安装顺序(我相信,后者中的一个实际使用规则将CUDA项目规则部署到VC10,并将CUDA构建扩展部署到MSBuild)
  • (具备以上所有能力)能够正确(我相信)构建GPU计算SDK示例
首先,假设我们有NVIDIA“template”项目的一组源文件,完全从头编译,没有任何VS
*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
准备环境的批处理命令有(如果与默认设置不匹配,请修复前三个以适应您的设置):

要构建的批处理文件(我称之为mine
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