CUDA4.2+VS2010+Win7 (32)安装配置
一、 CUDA基本配置
. 首先下载最新的显卡驱动、cuda toolkit4.2、cuda sdk4.2版
2. 我的电脑已经安装了VS2010,所以只需分别安装显卡驱动、cuda toolkit和cuda sdk。
它们默认的安装路径分别为:
VS2010: C:\ProgramFiles\Microsoft Visual Studio 10.0
CUDA toolkit: C:\Program Files\NVIDIA GPU ComputingToolkit\CUDA\v4.2
CUDA SDK: C:\ProgramData\NVIDIACorporation\NVIDIA GPU Computing SDK 4.2
3.ToolKit安装目录下(NVIDIA GPUComputing Toolkit\CUDA\v4.2\extras\visual_studio_integration)中包含有
MSBuildExtensions(CUDA4.2.props、CUDA4.2.targets、CUDA4.2.xml、Nvda.Build.CudaTasks.v4.2.dll)
拷贝这该目录下的所有文件到
C:\ProgramFiles\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations(C:\Program Files(x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations on 64 bit)文件夹(4.2版已默认安装好)
4.拷贝Toolkit\CUDA\v4.2\extras\visual_studio_integration\rules下的(NvCudaRuntimeApi.v4.2.rules、NvCudaDriverApi.rules、NvCudaDriverApi.v4.2.rules、NvCudaRuntimeApi.rules)文件到
C:\Program Files\MicrosoftVisual Studio 10.0\VC\VCProjectDefaults文件夹下。
5.双击 D:\Program Files\MicrosoftVisual Studio 10.0\VC\VCProjectDefaults文件夹下的gpucomputing_intellisense.reg文件(在我的安装目录下没找到)
6.工具库的生成:
(1)使用VS2010打开SDK_PATH \ c\common\cutil vs2010.sln VS2010 选“生成->”,生成所有配置需要的lib;目的:生成各配置需要的cutilxx[D].libXX:32 [D]debug模式。 lib存放的位置:SDK_PATH \ c\common\lib\(win32);将cutil32.dllcutil32.lib和cutil32D.dll cutil32D.lib分别复制到SDK_PATH\C\bin\win32\Release和DK_PATH\C\bin\win32\Debug中 (这里4.2已经自动添加了dll,所以我没有修改)。
(2)打开SDK_PATH\share\ shrUtils_vs2010.sln选“生成”;目的:生成各配置需要的shrUtilxx.lib XX:32 [D]debug模式;lib存放的位置:SDK_PATH\share\lib\(Win32);生成的库文件为shrUtils32.lib、shrUtils32D.lib,一起的文件还有freeglut.lib、glew32.lib。
二、测试SDK例子:
VS2010 打开SDK例子:deviceQuery, matrixMul各种配置均可编译执行成功。
二、 扩展VS高亮及规则
1.打开注册表在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Languages\FileExtensions\中添加子键 .cu然后copy .cpp的键值到.cu,这样才能表示cu也是VS下的VC的工程文件。
2. cu文件高亮这个设置是让VS2010编辑.cu文件时,把.cu文件里的C/C++语法高亮。 设置方法:
在VS2010的菜单依次点击:工具->选项->文本编辑器->文件扩展名,在这个界面里:“编辑器(I)”下拉框选microsoft visual ++,在“扩展名”文本框输入.cu点击“添加”按钮,重复工作把.cuh添加为vc++类型,点击确定按钮。把全部.cu文件关闭,再打开,.cu文件C++关键字就高亮了。如果不行就重新启动VS2010。
3. CUDA关键字高亮
为了让CUDA的关键字,象 __device__、dim3之类的文字高亮,需要如下步骤:把SDK_PATH\C\doc\syntax_highlighting\usertype.dat复制到X:\ProgramFiles\Microsoft Visual Studio 10.0\Common7\IDE\目录下。里面只有VS7和VS8的,我直接把VS8的copy过来了。
下面的我没有实验
13. CUDA 函数高亮,及CUDA函数输入代码提示。实现这个功能就要使用VAssistX了。首先安装支持VS2010的VAssistX。这个可以在CUDA安装前、后安装都行。
需要两步实现需要的功能:
a) 让VAssistX支持CUDA函数高亮和代码完成 这个在VAssistX的菜单里设置完成:在Vs2010菜单里依次点击: VassistX->Visual assist Xptions->Projects->C/C++Directories 在这个界面的“Platform”下拉框选Custom,在“ShowDirectories for..“下拉框选Otherinclude files,然后在下面的输入框里,新建、添加三个路径,点击确定,三个路径分别如下SDK_PATH的\c\common\incSDK_PATH的\shared\inc D:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v4.0\include这样分别在这三个目录里面的.h文件定义的函数和类型VAssistX会帮我们在编辑文件时候实现高亮和完成代码 如果少包含一个路径,这个目录里的.h定义的函数和类型就不会高亮和提示了。
b)让VAssistX支持.cu文件,也就是编辑.cu文件是VAssistX帮我们实现高亮和代码完成功能。这个需要编辑注册表了。 首先关闭VS2010,使用regedit打开注册表,找到如下位置:HKEY_CURRENT_USER\Software\Whole Tomato\Visual AssistX\VANet10在右边找到ExtSource项目,鼠标右键选修改,在原有文字后添加如下文字:.cu;.cuh;确定后关闭注册表,重新打开vs2010,VAssistX开始支持.cu及.cuh文件的语法高亮及代码完成。 此时.cu文件了的CUDA函数是高亮的,使用函数名符号就会自动提示函数全称,参数类型等信息了。
三、新建CUDA项目
环境搭建好之后,最应该掌握的就是CUDA项目的创建过程了。
1) 新建一个Win32控制台项目demo;
2) 注意在向导中选择“空项目”,然后点击完成;
3) 然后在项目中添加文件:
选择的文件类型是CPP文件,在写名称的时候可以直接写为.cu文件,也可以写成.cpp文件之后再进行重命名。
4) 右键项目名称–生成自定义…:选择CUDA 4.2.(targets,.props)
5) 右键.cu文件–属性:
6)下面右键项目名称–属性:检查一下,保持默认
7)选择“连接器|常规”属性页,在“Additional Libraries Directories”下添加
$(CUDA_PATH_V4_2)\lib\$(Platform);
8)打开“连接器|输入”属性页,在“AdditionalDependencies”中添加“cudart.lib;”(注:直接写进去就可以啦 !!)
9)以上项目就基本配置完成了,在demo.cu中加入以下代码:
#include
#include
#include
bool InitCUDA()
{
int count;
cudaGetDeviceCount(&count);
if(count==0)
{
fprintf(stderr,"There is no device.\n");
return false;
}
int i;
for(i=0;i { cudaDevicePropprop; if(cudaGetDeviceProperties(&prop,i)==cudaSuccess) { if(prop.major>=1) { break; } } } if(i==count) { fprintf(stderr,"There is no device supporting CUDA1.x.\n"); return false; } if(i==count) { fprintf(stderr,"There is no device supporting CUDA1.x.\n"); return false; } cudaSetDevice(i); return true; } int main() { if(!InitCUDA()) { return 0; } printf("CUDA initialized.\n"); system("pause"); return 0; } 程序运行通过,配置完成。