Romi-知行合一

轻轻的风轻轻的梦,轻轻的晨晨昏昏, 淡淡的云淡淡的泪,淡淡的年年岁岁。
  博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

CUDA3.2 + VS2008编程环境配置

Posted on 2012-04-20 17:22  romi  阅读(2490)  评论(0编辑  收藏  举报

CUDA(Compute Unified Device Architecture)到目前已经发布到4.2了,建议安装最新的,但是因为笔记本目前只支持cuda3.2,所以我只安装了cuda3.2。

cuda版本见官网:http://developer.nvidia.com/cuda-toolkit-archive

首先必须说的:本文题目是cuda3.2+vs2008,其实cuda其他版本和vs其他版本安装是一样的。

可以用一个工具CUDA-Z检测一下显卡设备是否支持CUDA,这个工具还可以查看显卡设备的一些计算相关属性。

对了,一定要先将Visual Studio工具安装了,要不怎么玩呢是吧

1. 安装所需文件

共需三个文件:CUDA driver、toolKit、SDK

①CUDA driver:名字很高级,其实就是显卡驱动,能够在显卡上跑起cuda程序所需的驱动。很多博客文章里说显卡驱动必须和toolKit、SDK的版本一致,其实不是这样的,显卡驱动和toolKit、SDK一致当然可以,显卡驱动版本更高那也是可以的。CUDA driver通常有个版本号,比如260.99,你可以用驱动人生或驱动之家之类的软件查看一下当前的显卡驱动,后5位数字就是版本号,当前安装的驱动如果比要求的驱动版本低,那就要更新驱动了,更新到要求的或比要求高的都是可以的。不建议下载官网的驱动,速度太慢。。。

②toolKit:打开http://developer.nvidia.com/cuda-toolkit-32-downloads,找到适合需要的版本下载之

③SDK:同样找到需要的sdk下载之

我win32系统所需的两个工具包如下图:

安装:按此顺序安装即可     驱动->toolKit->SDK

2.检测安装是否成功

三个步骤搞定后,桌面上有个NVIDIA GPU Computing SDK 3.2 Browser快捷方式,打开之,里面有很多示例,随便run一个,比如ocean_FFT,看到有一个模拟海平面的画面出来,说明你的安装成功了。

安装成功已完成第一步,下面就是如何成功地在VS2008中运用cuda

 

3.配置环境变量

安装好后,会默认配置好系统环境变量,比如CUDA_BIN_PATH、CUDA_INC_PATH、CUDA_LIB_PATH、NVSDKCOMPUTE_ROOT

这里,只需要在系统变量中Path值中添加一下sdk中的debug和release路径,如下:

...;C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2\C\bin\win32\Debug;C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2\C\bin\win32\Release

 

4.vs中运用cuda

sdk中有很多示例的工程文件,假如cuda sdk采用的是默认路径,那么示例在C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2\C\src里面(注意该路径默认如果是隐藏的,就在文件夹选项内设置显示所有文件和文件夹)

打开VS2008,打开项目,项目选择上面示例中的ocean_FFT,编译运行一下,是否也成功了?不出意外当然是可以运行的,因为这是人家专门做的示例程序,要不能编译运行那估计是你vs的问题。

5.在项目中用cuda

上面是用的别人的工程,自己怎么在工程中用cuda呢?网上会有很多人建议使用开勇的CUDA_VS_Wizard,这个工具确实牛逼,在cuda版本还是很低的时候确实是神兵利器,但是现在cuda3.2如果自己建工程也是不需要那么多的手工配置的,因为安装完toolKit后会有VS的生成规则的文件,在工程中加入该文件即可。实施不走如下:

首先建立一个空的win32控制台应用程序,建完后是什么文件都没有的;

然后在工程文件内新建一个.txt文件,在里面添加代码(代码在书上或网上抄一段,如果找不到,复制下段代码)

View Code
 1 /*****第一个CUDA程序*******/
 2 
 3 #include <stdio.h>  //C标准输入输出接口
 4 #include <stdlib.h>
 5 #include <cuda_runtime.h>  //使用runtime API
 6 
 7 //CUDA初始化
 8 bool InitCUDA()
 9 {
10     int count; 
11     //传回有计算能力的设备数(≥1),没有回传回1,device 0是一个仿真装置,不支持CUDA功能
12     cudaGetDeviceCount(&count);
13 
14     if(count == 0) //没有cuda计算能力的设备
15     {
16         fprintf(stderr,"There is no device.\n");
17         return false;
18     }
19 
20     int i;
21     for(i=0;i<count;i++)
22     {
23         cudaDeviceProp prop; //设备属性
24         if (cudaGetDeviceProperties(&prop,i)==cudaSuccess) //取得设备数据,brief Returns information about the compute-device
25         {
26             if (prop.major>=1) //cuda计算能力
27             {
28                 break;
29             }
30         }
31     }
32 
33     if (i==count)
34     {
35         fprintf(stderr,"There is no device supporting CUDA 1.x\n");
36         return false;
37     }
38 
39     cudaSetDevice(i); //brief Set device to be used for GPU executions
40     return true;
41 }
42 
43 int main()
44 {
45     if (!InitCUDA())
46     {
47         return 0;
48     }
49     printf("CUDA initialized.\n");
50 }

然后将.txt文件重命名为.cu文件,在项目中加入该.cu文件

下面进行项目属性设置

详细图文设置见http://www.cnblogs.com/Romi/archive/2012/04/20/2459669.html

项目名右键,选择自定义生成规则,在可用规则文件里面选择CUDA Runtime API Rule(v3.2)

这时项目属性的配置属性里就多了CUDA Runtime API这个选项,里面已经设置好了不用去管它

再在配置属性—链接器—常规选项的附加库目录里面,添加$(NVSDKCOMPUTE_ROOT)\C\common\lib和$(CUDA_LIB_PATH)

在配置属性—链接器—输入选项的附加依赖项里添加cudart.lib  cutil32D.lib

编译运行。。。显卡支持cuda会出现CUDA initialized.     如果有问题,建议打开sdk中的工程看下别人是怎么设置的,然后用到本项目下

题外话:如果你是使用开勇的CUDA_VS_Wizard,编译或链接或显示结果出现问题都不要奇怪,因为这个工具用的是cuda2,生成规则要换成v3.2版的,而且链接库的路径名可能不同也要修改,另外,使用该向导写程序不能跟踪调试。

6.添加Visual Asissit X支持

上面的.cu文件内的代码没有语法高亮,Visual Asisst X工具可以完成该功能,该部分网上有详细的方案,这里我将步骤摘录下来:

设置好了后,工程中添加cuda文件就不需要再用txt转了,在添加新项里就有cuda文件(.cu文件)

最后,祝CUDA之旅愉快!