Cuda3.2+VS2010的环境配置
近日学习Cuda,在网上收集了一些资料,总算可以搭建起Cuda3.2+VS2010的开发环境。我是初学者,不对之处,还望指出。
关于Cuda的介绍,百度、Google一下都可以找到。这里从略。
(一)开发硬件
Cuda编程需要nVidia的显卡,太老的也不支持Cuda。可以在这里(http://www.nvidia.cn/object/cuda_learn_products_cn.html)查看自己的nVidia显卡是否支持Cuda。
(二)开发软件
1. Cuda开发工具:Developer Driver + CUDA Toolkit + GPU Computing SDK
这3种工具,分别有Windows版、Linux版和Mac OS X版。我用的是Windows 7 32位版。根据自己的情况下载对应的。在nVidia官网上可以找到,具体地址是:http://developer.nvidia.com/object/cuda_3_2_downloads.html
Developer Driver:底层开发驱动,连接硬件。
CUDA Toolkit:主要的开发工具。
GPU Computing SDK:一些Cuda的示例代码和文档。
安装好上面3个软件后(最好不要修改安装路径,可能会影响后面插件的安装),在开始菜单中会出现新的目录NVIDIA Corporation以及它下面的3D Vision、CUDA Toolkit和NVIDIA GPU Computing SDK 3.2。在NVIDIA GPU Computing SDK 3.2目录下有一个名叫“NVIDIA GPU Computing SDK 3.2 Browser”的工具,打开它可以看到示例代码列表,在每一行的右边有一个Run超链接,点击后就可以运行一个示例程序了。如果3个软件安装没有问题的话,示例程序当然跑得起。
2. 让VS2010支持Cuda
在CSDN上有个Cuda3.2_Vs2010.rar(http://d.download.csdn.net/down/2966780/taseaa,在文章末尾,我也会附上这个软件),解压后按照里面的cuda32.vs2010_安装说明.txt所说的,就可以在VS2010里建立Cuda的工程模板。如图1和2。
图1 新建Cuda项目
图2 新建Cuda文件
3. 让VS支持.cu文件
.cu文件是Cuda的源文件,默认VS2010是不支持.cu文件的语法着色。找到“工具”->“选项”->“文本编辑器”->“文件扩展名”,“扩展名”里输入“.cu”,“编辑器”选择“Microsoft Visual C++”,然后“添加”即可。重新打开.cu文件,就可以看到C/C++语言风格的语法颜色,因为Cuda使用是类C的Cuda C语言,就近选择C/C++。
4. 让Visual Assist X支持.cu文件
如果VS2010安装了Visual Assist X,可以让它支持.cu文件。我的Visual Assist X是10.6.1832.0,先关闭VS2010,然后打开注册表,搜索“VANet10”,如图3,找到ExtSource项,添加.cu值,注意分号隔开。
图3 让Visual Assist X支持.cu文件
以上就基本算是搭建好Cuda的开发环境。
(三)第一个示例程序
新建一个Cuda项目(如图1),选择CUDA 3.0 Runtime Project,我的工程名为“Cuda_Runtime”,自动会生产2个文件:Cuda_Runtime.cu和Cuda_Runtime_kernel.cu,在Cuda_Runtime.cu编写如下代码:
#include <cuda.h> #include <Cuda_Runtime_kernel.cu> #include <stdio.h> bool InitCUDA() { int count; cudaGetDeviceCount(&count); if(count == 0) { fprintf(stderr, "There is no device./n"); return false; } int i; for(i=0; i<count; i++) { cudaDeviceProp prop; if(cudaGetDeviceProperties(&prop, i) == cudaSuccess) { if(prop.major >= 1) { break; } } } if(i == count) { fprintf(stderr, "There is no device supporting CUDA 1.x./n"); return false; } cudaSetDevice(i); return true; } int main(int argc, char** argv) { if(!InitCUDA()) { return 0; } printf("CUDA initialized./n"); system("PAUSE"); return 0; }
这个示例代码来自“深入浅出CUDA.pdf”,网上找得到pdf。编译、运行程序,出现“CUDA initialized.”,说明一切正常。
注:文中提及的软件,由于上传不了附件,但网上均能搜到。