在windows下安装cuda

 

    硬件环境:cuda支持目前NV的市面上的绝大多数显卡,包括Tesla、Quadro、GeForce,只有少数早期的旧型号显卡不支持cuda。

详见http://www.nvidia.cn/object/cuda_learn_products_cn.html

    软件环境:cuda可以在Windows(32/64)、Mac OS、Linux(32/64)中的大多数版本中安装。

在windows下,目前cuda只支持在 VisualStudio 7.x 系列、Visual Studio 8以及免费的 VisualStudio C++ 2005 Express。所以需要预先安装以上软件中的任意一种。

 

下面我们以Visual Studio 2005 为例演示cuda的安装。

 

1、 cuda安装包

cuda是免费使用的,各种操作系统下的cuda安装包均可以在http://www.nvidia.cn/object/cuda_get_cn.html上免费下载。

Cuda提供3个安装包,分别是:SDK,Toolkit和Display。SDK包括许多例子程序和函数库。Toolkit包括cuda的基本工具。Display包括了NV显卡的驱动程序。Toolkit是核心。

 

2、 安装cuda

2.1 安装cuda toolkit

双击NVIDIA_CUDA_toolkit_2.0_win32.exe安装,安装完成后在安装目录下出现6个文件夹,分别是:

Bin :     工具程序和动态链接库

Doc :     相关文档

Include : header头文件包

Lib :     静态库

Open64 :  基于open64的cudacompiler

Src :     部分原始代码

安装过程中toolkit自动设定了3个环境变量:CUDA_BIN_PATH、CUDA_INC_PATH和CUDA_LIB_PATH分别对应工具程序库、头文件库和程序库,预设路径为当前安装文件夹下的bin、include 和lib三个文件夹。并将bin文件夹目录加入环境变量path中。

2.2 安装CUDA SDK

SDK可以根据需要选择安装(推荐安装,因为SDK中的许多例子程序和函数库非常有用)。

2.3 安装 CUDA Display

对于没有安装NV显卡的计算机,不需要安装Display安装包,程序也可以在模拟模式下运行。

 

3、在Visual Studio中使用cuda

    CUDA的主要工具是nvcc,它会执行所需要的程序,将CUDA程序编译并执行。下面介绍了三种配置cuda nvcc的方法。这里推荐使用第三种方法。

 

 

    3.1、方法一(NV自带的修改模板方法)

    3.1.1、在CUDA SDK安装目录下的project目录下新建文件夹,命名为想要建立的工程名字,比如test。 并在project文件夹下找到SDK自带的template文件夹,将template文件夹下所有的文件copy到test下。

    3.1.2、将copy到test文件夹下的所有文件文件名中的template改为test。

test.sln与test.vcproj是vs 8系列的工程文件,test_vc7.sln与test_vc7.vcproj是vs 7系列的工程文件,可以根据自己Visual Studio的版本选择要更改的工程文件,其它两个可以删除。在Visual Studio C++2005 Express中,可以将test_vc7.sln与test_vc7.vcproj删除。

    3.1.3、将*.cu、*.sln和*.vcproj用记事本等文字编辑软件打开,使用查找替换功能将以上文件中所有的template改为test。

    3.1.4、使用*.sln文件打开整个工程,可以任意更改代码,编译运行。

    3.1.5、修改输出文件路径(可选,如不改变,可执行文件输出到上两级目录下的bin目录中),如使用了CUDA SDK中的动态链接库,将相应的动态链接库拷贝到可执行文件的同一目录下。

    总结:这种方法是NV公司为windows下使用vs编译cuda提供的标准方法(参见\SDK\doc\CUDA_SDK_release_notes_windows.txt), 使用公司提供的模板更改为自己想要建立的工程,也可以参照以上方法,在SDK Project库中的找到与自己想建立工程相近的其它工程做更改。但是费时费力,不推荐使用。

 

    3.2、方法二(设定custom build tool执行cuda)

    3.2.1、首先建立一个win32 console 模式的 empty project,并建立一个新的源文件,此处以main.cu为例。

P1.建立一个win32 project

 

P2.设定为empty project

 

P3.建立main.cu

 

3.2.2、在solution explorer 中main.cu上右键单击,选择property。在打开的对话框中选择General,确定Tool的选项是Custom Build Tool。

P4.确认Tool选项

 

3.2.3、选择Custom Bulid Step,在Command Line中分别设定模式参数

    

(1)、Release 模式:"$(CUDA_BIN_PATH)\nvcc.exe" -ccbin"$(VCInstallDir)bin" -c -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler/EHsc,/W3,/nologo,/Wp64,/O2,/Zi,/MT -I"$(CUDA_INC_PATH)" -o$(ConfigurationName)\$(InputName).obj $(InputFileName)

(2)、Debug 模式:"$(CUDA_BIN_PATH)\nvcc.exe" -ccbin "$(VCInstallDir)bin"-c -D_DEBUG -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler/EHsc,/W3,/nologo,/Wp64,/Od,/Zi,/RTC1,/MTd -I"$(CUDA_INC_PATH)" -o$(ConfigurationName)\$(InputName).obj $(InputFileName)

P5.设定Command Line参数

 

     如果计算机中没有安装NV显卡,使用模拟模式,需增加两个额外的设定。新建两个模式EmuRelease和EmuDebug。

P6.新建模式(1)

P6.新建模式(2)

     对新建立的EmuRelease和EmuDebug的Command Line分别设定为:

(1)、EmuRelease 模式:"$(CUDA_BIN_PATH)\nvcc.exe"-ccbin "$(VCInstallDir)bin" -deviceemu -c -DWIN32 -D_CONSOLE -D_MBCS-Xcompiler /EHsc,/W3,/nologo,/Wp64,/O2,/Zi,/MT -I"$(CUDA_INC_PATH)"-o $(ConfigurationName)\$(InputName).obj $(InputFileName)

(2)、EmuDebug 模式:"$(CUDA_BIN_PATH)\nvcc.exe"-ccbin "$(VCInstallDir)bin" -deviceemu -c -D_DEBUG -DWIN32 -D_CONSOLE-D_MBCS -Xcompiler /EHsc,/W3,/nologo,/Wp64,/Od,/Zi,/RTC1,/MTd -I"$(CUDA_INC_PATH)"-o $(ConfigurationName)\$(InputName).obj $(InputFileName)

 

3.1.4、对所有的设定模式,均在 Custom Build StepOutputs 中加入$(ConfigurationName)\$(InputName).obj。

P7.设定Outputs

 

3.2.5、右键单击project,选择Property,再选择Linker,对所有模式修改以下设定:

(1)、General/Enable IncrementalLinking:No

(2)、General/Additional LibraryDirectories:$(CUDA_LIB_PATH)

(3)、Input/AdditionalDependencies:cudart.lib

P8.设定Linker参数(1)

P9.设定Linker参数(2)

 

3.2.6 设置头文件路径

Tools -> Options,弹出以下对话框

 

将右边的下拉框选择Include Files,点击添加按钮,将C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\common\inc选入到头文件搜索路径中。

 

3.2.7 选择链接库文件路径

同上库头文件路径选择,将右边下拉框选择Library File,选择路径C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\common\lib。

 

 

 

3.2.8、完成,可以编写cuda程序,并直接编译执行了(编译方式于C++相同)

总结:这种方法不需要借助模板,也不需要使用第三方的软件。但是这种操作复杂,而且仅对配置的单个project有效。如果重新建立一个project又要重新配置一遍。故不推荐使用。需要注意的是,当需要使用CUDA SDK中的动态链接库(以dll为后缀)时,将动态链接库和生成的可执行文件放在同一个路径下。

P10.完成

 

3.3、方法三(使用CUDA_VS_Wizard执行cuda)


    3.3.1、解压CUDA_VS_Wizard并安装。

 

    3.3.2、将CUDA SDK安装目录下的bin\win32文件夹下的四个文件夹(Debug, EmuDebug,Release, EmuRelease)的路径全部加入环境变量中的path变量中。

 

    3.3.3、使用vc直接建立工程。在工程选项里选择CUDAWinApp。

   

   

 

    3.4.4、如果是在模拟模式下运行,需要在解决方案中右键属性,在ConfigurationProperities 中将Configuration 设置为Emu模式。

 

 

P14.模拟模式设置(1)

P15.模拟模式设置(2)

 

3.3.5、完成。

总结:这种方法虽然使用了第三方的工具,但只需要配置一次即可,而且配置简单,以后每次建立cuda程序都可以直接生成。如果是建立预定义头文件的工程,则建立的cuda程序,会自带一个sample.cu,可以选择在sample.cu的基础上更改或删除sample.cu重新建立.cu文件。如果是建立空工程则没有。建立方法.cu文件的方法是建立.cpp文件或.txt文件改名为.cu文件即可。推荐使用。

 

 

4、语法高亮设置。

 

    4.1、找到CUDA SDK安装目录下doc\syntax_highlighting\自带的文件usertypt.dat,将其copy到Microsoft VisualStudio 安装目录的\Common7\IDE下。

   

    4.2、在Visual Studio做以下设置: 在Tools-> Options->Text Editor-> File Extension中添加cu。

   

P16.设置高亮

 

4.3、重新启动Visual Studio,完成高亮设置。


补充:

      1.准备好cuda4.0 64位toolkit,sdk,驱动。注意在安装vs2008时,一定要选择安装64位编译器。如果已经安装了,可在进入维护界面,升级,在VC++里,勾上64编译器。

       2.安装好toolkit,sdk后,跟CUDA3.2一样设置环境变量,注销。编译一个例子,不出意外的话,会报错缺少cutil64。因为CUDA4.0不在包括cutil32和和cutil64,所以我们得人工编译生成。

       3.在......SDK/C/Common中,打开vs2008工程,在32位和64位下,分别在debug和release下重新编译工程,生成的lib在......SDK/C/Common/lib中。

      4. 打开VS,在Tool –> Options –> Projectsand Solutions –> VC++ Directories 添加刚才生成的两个lib文件。

 

 Tool->Options->Projects and Solutions->VC++ Directories

 Include files中添加路径(最后):
    ....../NVIDIA Corporation/NVIDIA CUDA SDK/common/inc

   ....../NVIDIA Corporation/NVIDIA GPU Computing SDK 4.0/ C/common/inc

 Library files中添加路径(最后):
  ....../NVIDIA Corporation/NVIDIA CUDA SDK/common/lib

  ....../NVIDIA Corporation/NVIDIA GPU Computing SDK 4.0/C/common/lib

 Source files中添加路径(最后):
    ....../NVIDIA Corporation/NVIDIA CUDA SDK/common/src  

   ....../NVIDIA Corporation/NVIDIA GPU Computing SDK 4.0 /C/common/src

 

 

cuda_by_example.Zip”把“common文件夹”解压缩到目录:C:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v4.0\下;把“bin文件夹”里的文件glut32.dll和glut64.dll复制到目录:C:\Program Files\NVIDIA GPUComputing Toolkit\CUDA\v4.0\bin下;把“lib文件夹”里的文件glut32.lib和glut64.lib复制到目录:C:\Program Files\NVIDIA GPUComputing Toolkit\CUDA\v4.0\lib\Win32下。