今天早上配置CUDA环境,因为C盘空间不组安装失败,又用金山卫士中的“大文件管理”清理了一下C盘,还是安装失败。重启了一下电脑,改用自定义安装,还是有东西没安装成功,不过主要的安装上了,运行 addVector, bandWidth, testOpenMP, 都可以。
在CUDA程序中打开 openMP 开关。 项目-》 属性 -》 CUDA C/C++ -> Host -> Runtime Library 改为 "Multi-Threaded Debug (/MTd) " , 我用的Debug 版本,所以选Debug, 如果是Realease 版本 可以选 "Multi-Threaded (/MT) "。
添加CUDA代码的语法高亮。
我的环境:Win8 64 ,GT310。
要安装的是:CUDA 5.5 general 64位 + VS2010旗舰
基本安装:
1. 显卡驱动
N卡驱动,装最新版。
2. VS2010, 没装VS2010sp1 慢慢装吧,耐心等待。
3. VassistX 这个可以以后装也行。
4. cuda 安装。CUDA5.0以上已经将ToolKit和SDK等整合在了一起,因此只需下载一个安装文件即可。
CUDA的默认安装目录为:C:\ProgramFiles\NVIDIA GPU Computing Toolkit\这里推荐使用默认的安装路径,不需更改。
5、安装完成后,在系统变量环境里面会自动新添加了两个环境变量
CUDA_PATH
C:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v5.5
CUDA_PATH_V5_5
C:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v5.5
且在系统变量的path也会自动添加
C:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v5.5\bin;C:\Program Files\NVIDIA GPUComputing Toolkit\CUDA\v5.5\libnvvp;C:\Program Files (x86)\NVIDIACorporation\PhysX\Common;
下面是关于代码高亮的设置。共三个设置
1. .cu文件高亮
这个设置是让VS2010编辑.cu文件时,把.cu文件里的C/C++语法高亮。
设置方法: 在VS2010的菜单依次点击:工具->选项->文本编辑器->文件扩展名 ,在这个界面里: “编辑器(I)”下拉框选microsoft visual ++,在“扩展名”文本框输入.cu 点击“添加”按钮 ,重复工作把.cuh 添加为vc++类型,点击确定按钮。 把全部.cu文件关闭,再打开,.cu文件C++关键字就高亮了。如果不行就重新VS2010。
但是CUDA的关键字还是黑色的,下一步把CUDA关键自高亮显示
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 32位下的路径。
注意:win7 64系统要复制到下面这个目录里,复制到这里是不会CUDA关键字高亮的:
X:\Program Files \Microsoft Visual Studio 10.0\Common7\IDE\
(如果你的win7是32位的,可能正好是上面这个目录,应该会高亮的,这可能是win7 64位和32位
的差别吧)
再次强调:SDK_PATH要换成你安装SDK的实际路径,不要直接使用这个字符串。
VS2010需要重启,重启后打开.cu文件,CUDA的关键自应该变成蓝色了。
3. CUDA 函数高亮,及CUDA函数输入代码提示
实现这个功能就要使用VAssistX了。 首先安装支持VS2010的VAssistX。这个可以在CUDA 安装前、后安装都行。
需要两步实现需要的功能:
a) 让VAssistX支持CUDA函数高亮和代码完成
这个在VAssistX的菜单里设置完成:在Vs2010菜单里依次点击:
VassistX->Visual assist X Options->Projects->C/C++Directories
在这个界面的 “Platform”下拉框选 Custom,在“Show Directories for..“下拉框选 Other include files,
然后在下面的输入框里,新建、添加三个路径,点击确定,两个个路径分别如下
再次强调:这里SDK_PATH要用你安装的SDK路径代替,X:是你的CUDA toolkit安装盘符。
这样分别在这三个目录里面的.h文件定义的函数和类型VAssistX会帮我们在编辑文件时候实现高亮和完成代码
如果少包含一个路径,这个目录里的.h定义的函数和类型就不会高亮和提示了。
b)让VAssistX支持.cu文件,也就是编辑.cu文件是VAssistX帮我们实现高亮和代码完成功能。这个需要编辑注册表了。
首先关闭VS2010,使用regedit打开注册表,找到如下位置:
HKEY_CURRENT_USER\Software\Whole Tomato\Visual Assist X\VANet10
在右边找到ExtSource项目,鼠标右键选修改,在原有文字后添加如下文字:.cu;.cuh; 确定后
关闭注册表,重新打开vs2010,VAssistX开始支持.cu及.cuh文件的语法高亮及代码完成。
此时.cu文件了的CUDA函数是高亮的,使用函数名符号就会自动提示函数全称,参数类型等信息了。
1. VS2010显示.cu文件时,有很多CUDA函数下有波浪线的问题
2. 在.cu文件里使用VS2010的“转到定义”功能查无法找到CUDA函数的定义
--------------------------------
这两个问题的解决方法其实是一样的,原因是VS2010不认识这些函数,不指定它们在那个头文件里包含的,
解决的方法很简单,把CUDA tookit 和CUDA SDK的头文件路径加到VS2010的VC++目录里面。
在VS2008里面使用工具->选项对话框里面可以设置,但是VS2010的这个对话框里显示“工具">"选项"中的VC++目标编辑功能已被否决。
经过网上搜索发现此工作已经变成了项目属性里的选项。
修改方法是:使用”视图”->其它窗口->属性窗口,打开属性管理器视图。
属性管理器显示是项目所有的配置信息:如Debug|win32 Debug|X64,Release|32 Relase|x64 ,对32位和64位配置需要单独,同一平台的Debug和Relase只要修改一个就形了,如修改了Debug|Win32 ,则Release|win32就无需修改了。
具体方法,假设修改Debug|win32,鼠标点击展开Debug|win32项目,可以看到第一个子项目是“microsoft .Cpp.Win32.user" ,双击该项目,出现“microsoft .Cpp.Win32.user”对话框,
对话框里面有VC++目录选项, 在右边的“包含目录”选项里,单击鼠标,选编辑,添加CUDA toolkit 的include目录,CUDA SDK目录下的\C\common\inc 和 \share\inc 目录信息,这三个目录也就是添加到VAssistX里的头文件目录,目的是让VC2010知道这些头文件里定义的函数,重启VS2010,打开CUDA工程
VS2010就不会在CUDA函数下显示红色波浪线了,而且可以使用“转到定义”,“转到声明”功能定位到CUDA函数和类型定义的文件。
最后一个小问题:经过如上的设置,基本上不会再有波浪线出现,个别符号例外,有波浪线也可以转到定义。
但是发现一些小问题,如sdk例子template项目和MatrixMul项目,打开后发现在xxxx_kernel.cu里定义的函数,在其它.cu里还是有波浪线,也不能使用“转到定义”功能,如matrixMul.cu里无法查找在matrixMul_kernel.cu里定义的函数matrixMul() ,查看matrixMul.cu文件发现该文件采用如下形式包含matrixMul_kernel.cu文件:include<matrixMul_kernel.cu>
这是告诉VS2010要到VS2010系统定义的include目录里面查找包含文件,实际上该文件是在当前项目的目录里。CUDA的编译器可以找到该文件(有点怪),VS2010找不到该文件,该文件里定义的函数VS2010也不认识,解决方法很简单,改成include“matrixMul_kernel.cu“,这样CDUA编译器能找到该文件,VS也能找到该文件,该文件里定义的函数就不会有下划线了,可以使用“转到定义”,“转到声明”,“查找引用”功能定位到了。