【GPU开发笔记】一:CUDA初探——环境配置

来源:互联网 发布:性感淘宝买家秀的网店 编辑:程序博客网 时间:2024/04/29 03:55

 在开始学习之前,首先要做的就是找到一本好的教材,要知道一本好的教材可以让我们更加轻松地入门。在看了一些个CUDA编程相关的教材之后,我向大家推荐的一本教材叫做《GPU高性能编程CUDA实战》。本教材相比其他的教材而言,它讲得比较细,对于一些我们可能不太明白的知识点做了详细的说明。而且这本教材以层层深入的方式向我们展示了GPU的世界,从而引领我们进入CUDA编程的大门。其他的教材的话我建议的是《深入浅出谈CUDA》以及《CUDA编程指南》,前一本书可以和《GPU高性能编程CUDA实战》这本书一起看,我建议先看《深入浅出谈CUDA》,然后再看《GPU高性能编程CUDA实战》,这样理解起来能够更加的透彻。

介绍完了教材,接下来我们就可以进入CUDA的世界了。首先就是需要一个具有NVIDIA显卡的电脑,因为CUDA只能够支持NVIDIA的显卡,其他的显卡(例如ATI)是不能够进行CUDA编程的。有了硬件平台,接下来我们需要的就是编程环境了。由于本人是在windows下进行的学习,所以我推荐的是VS2010+CUDA 5.5。VS2010的下载与安装这里就不再赘述,CUDA5.5是集成的CUDA ToolKit和SDK于一身的软件,可以到NVIDIA Developer Zone去下载,下载地址https://developer.nvidia.com/cuda-downloads,有了工具我们就可以进行CUDA编程了。

cuda安装好之后,就可以配置VS2010的cuda环境了,此时cuda已经和你的vs绑定好了。于是我们就可以开始我们的第一个cuda程序:

1.创建一个cuda项目

由于安装cuda5.5的时候已经和vs2010绑定,所以直接可以创建一个cuda项目。选择cuda 5.5 runtime就可以。

此时vs2010会自动为这个项目添加一个cuda程序:kernel.cu。直接编译这个.cu文件,可能会出现"转换到 COFF 期间失败: 文件无效或损坏"这样的错误信息,修改如下所示:

右键->工程属性->配置属性-> 清单工具->输入和输出->嵌入清单,选择[否]

2.CUDA C/C++关键字和函数高亮显示

在上面.cu文件中发现CUDA C/C++的关键字__global__等没有高亮显示,而且还有下划曲线。下面进行CUDA C/C++关键字和函数的语法高亮显示,配置Visual AssistX 函数高亮,代码提示等功能。

下面是关于代码高亮的设置。共三个设置

2.1.cu文件中C/C++关键字高亮

这个设置是让VS2010编辑.cu文件时,把.cu文件里的C/C++语法高亮。

设置方法: 在VS2010的菜单 依次点击:“工具|选项|文本编辑器|文件扩展名”,在这个界面里: “编辑器”下拉框选“Microsoft Visual C++”,在“Extension”文本框输入.cu 点击“添加”按钮 ,重复工作把.cuh 添加为vc++类型,点击确定按钮。 把全部.cu文件关闭,再打开,.cu文件C++关键字就高亮了。如果不行就重启VS2010。但是CUDA的关键字还是黑色的,下一步把CUDA关键自高亮显示。

2.2.CUDA关键字高亮

为了让CUDA的关键字,如__device__、dim3之类的文字高亮,需要如下步骤:

把SDK_PATH\C\doc\syntax_highlighting\usertype.dat复制到X:\Program Files (X86)\Microsoft Visual Studio 10.0\Common7\IDE\ 目录下 

这里 X:是安装VS2010盘符,这是win7 64位下的路径。

注意:win7 64系统不要复制到这个目录里,复制到这里是不会CUDA关键字高亮的:

X:\Program Files \Microsoft Visual Studio 10.0\Common7\IDE\
(如果你的win7是32位的,可能正好是上面这个目录,应该会高亮的,这是win7 64位和32位的差别)

再次强调:SDK_PATH要换成你安装SDK的实际路径,不要直接使用这个字符串。

VS2010需要重启,重启后打开.cu文件,CUDA的关键字应该变成蓝色了。

2.3. CUDA 函数高亮,及CUDA函数输入代码提示
实现这个功能就要使用VAssistX了。 首先安装支持VS2010的Visual AssistX, 在CUDA 安装前、后安装都行。需要两步实现需要的功能:

a) 让Visual AssistX支持CUDA函数高亮和代码完成。在VS2010菜单里依次点击: “VAssistX->Visual assist X Options->Projects->C/C++Directories”在这个界面的 “Platform”下拉框选 Custom,在“Show Directories for..“下拉框选 Other include files, 然后在下面的输入框里,新建、添加三个路径,点击确定,三个路径分别如下:

SDK_PATH的\c\common\inc
       SDK_PATH的\shared\inc
       X:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\include

这里SDK_PATH要用你安装的SDK路径代替,X:是你的CUDA toolkit安装盘符。

这样分别在这三个目录里面的.h文件定义的函数和类型VAssistX会帮我们在编辑文件时候实现高亮和完成代码。如果少包含一个路径,这个目录里的.h定义的函数和类型就不会高亮和提示了。

b)让Visual AssistX支持.cu文件,也就让Visual AssistX帮我们实现.cu文件高亮和代码完成功能,需要编辑注册表。首先关闭VS2010,点击开始菜单输入regedit打开注册表,找到如下位置:HKEY_CURRENT_USER\Software\Whole Tomato\Visual Assist X\VANet10。在右边找到ExtSource项目,鼠标右键选修改,在原有文字后添加如下文字:.cu;.cuh; 确定后
关闭注册表,重新打开vs2010,Visual AssistX开始支持.cu及.cuh文件的语法高亮及代码完成。此时.cu文件的CUDA函数是高亮的,使用函数名符号就会自动提示函数全称,参数类型等信息了。

经过上面的安装,开发程序应该没问题了,但会发现有如下的问题:

1. VS2010显示.cu文件时,有很多CUDA函数下有波浪线

2. 在.cu文件里使用VS2010的“Go to definition”功能查无法找到CUDA函数的定义。

这两个问题的原因是VS2010不认识这些函数,没有指定它们在那个头文件里包含的。解决方法其实是一样的,把CUDA tookit 和CUDA SDK的头文件路径加到VS2010的VC++目录里面。