现在的位置: 首页 > 综合 > 正文

VS2010中配置CUDA5.0

2013年03月02日 ⁄ 综合 ⁄ 共 4214字 ⁄ 字号 评论关闭

1、安装之前必须确认自己电脑的GPU支持CUDA。在设备管理器中找到显示适配器(Display adapters),找到自己电脑的显卡型号,如果包含在http://www.nvidia.com/object/cuda_gpus.html的列表中,说明支持CUDA。

安装CUDA之前最好检查一下自己电脑的显卡驱动版本,版本过老的话,需要更新。有时候安装完毕CUDA之后,运行6中的deviceQuery程序时会出错,请优先考虑显卡驱动的问题。

2、下载NVIDIA CUDA Toolkit ( http://www.nvidia.com/content/cuda/cuda-downloads.html),本人下载的是desktop版本win32

CUDA5.0已经将ToolKit和SDK等整合在了一起,因此只需下载一个安装文件即可。

3、首先确认自己已经安装Visual Studio 2010 后再安装助手Visual Assist X。这里Visual Assist X 对于使用CUDA 不是必须的,但为了使程序编写更为方便,这里推荐安装。

4、CUDA的默认安装目录为:C:\Program Files\NVIDIA GPU Computing Toolkit\ 这里推荐使用默认的安装路径,不需更改。

5、安装完成后,在系统环境里面会发现新添加了两个环境变量:CUDA_PATH_V5_0和CUDA_PATH。但是这些还不够。保险起见,手动配置环境变量。在系统环境变量中新建如下项:

CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.0\common
CUDA_LIB_PATH = %CUDA_PATH%\lib\Win32
CUDA_BIN_PATH = %CUDA_PATH%\bin
CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\Win32
CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\Win32

然后在系统环境变量Path 后添加如下内容:
;%CUDA_LIB_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_LIB_PATH%;%CUDA_SDK_BIN_PATH%;

6、此时CUDA已经安装成功。可以测试运行。

(1)、启动命令行,Start > All Programs > Accessories > Command Prompt,输入nvcc -V查看版本信息。

(2)、运行例子程序deviceQuery。路径在如下位置:

Windows XP:
C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\CUDASamples\v5.0\C\bin\win32\Release

Windows Vista, Windows 7, Windows 8, Windows Server 2003, and Windows Server2008:
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.0\C\bin\win32\Release

(详见http://download.csdn.net/detail/diyoosjtu/4945848

运行结果如下:

(3)、运行bandwidthTest示例程序,结果如下:

(4)、运行Particles示例程序,观看效果。

若以上都运行正常,说明CUDA安装成功。

7、CUDA C/C++关键字及函数高亮显示

这个设置是让Visual Studio2010 在编辑.cu 文件时,把.cu 文件里的C/C++语法高亮。设置方法: 在Visual Studio 2010 的菜单依次选“ Tools|Options|Text Editor|File Extension(工具|选项|文本编辑器|文件扩展名)”,在该窗口中将“Editor(编辑器)”下拉框选择“Microsoft Visual C++”,在“Extension(扩展名)”文本框中输入cu 点击“Add(添加)”按钮,重复工作把cuh 添加为Visual
C++类型,添加完成后点击“OK(确定)”按钮,如下图所示:

为了让CUDA 的关键字,如__device__、dim3 等的文字高亮,需按如下步骤设置:
将C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.0\doc\syntax_highlighting\visual_studio_8 目录下的usertype.dat 文件复制到C:\Program Files\Microsoft Visual Studio10.0\Common7\IDE\ 目录下( 对x64 位Win7 系统为X:\Program Files(X86)\Microsoft Visual Studio 10.0\Common7\IDE\)。重启Visual
Studio 2010 后打开.cu 文件,CUDA 的关键字应该变成蓝色了。

8、CUDA 函数高亮,及CUDA 函数输入代码提示

实现这个功能需要使用Visual Assist X,如果没有安装支持Visual Studio 2010的Visual Assist X,这部分功能无法实现。这里只是为使编写代码更加方便,对CUDA 程序的开发无实质性障碍。
如果已经安装Visual Assist X,可以通过以下两步实现需要的功能。
1)使Visual Assist X 支持CUDA 函数高亮和代码完成
在Visual Studio 2010 的菜单里依次选择:“ VAssistX|Visual assist X Options|Projects|C/C++Directories”,在该界面的“Platform”下拉框中选择Custom,在“Show Directories for”下拉框中选择Other include files, 然后在下面的输入框里,新建、添加如下路径,如图:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.0\common\inc

使Visual Assist X 实现.cu 文件高亮和代码完成功能,需要编辑注册表。在修改注册表时,为避免带来不必要的错误请先关闭Visual Studio 2010。使用Win+R组合键打开“运行”窗口,键入入regedit 命令(register edit 的缩写)打开注册表,找到如下位置:HKEY_CURRENT_USER\Software\Whole Tomato\Visual Assist X\VANet10。在右边找到ExtSource 项目,鼠标右键选修改,在原有文字后添加如下文字:.cu;.cuh;
确定后关闭注册表。重新打开Visual Studio 2010,Visual Assist X 便开始支持.cu 及.cuh 文件的语法高亮及代码完成。此时.cu 文件的CUDA 函数是高亮的,使用函数名符号就会自动提示函数全称,参数类型等信息。

修改注册表时,请把vs关闭,否则修改不成功。

9、其余的重要配置:

在“Additional Libraries Directories”下添加“$(CUDA_PATH_V5_0)\lib\$(Platform);”(下图只是示意,其中的路径按照自己安装之后的来设置,也可以直接定位到文件夹的绝对路径


在“Additional
Dependencies
”中添加“cudart.lib;



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

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

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

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

解决方法如下:

在VC++目录的include directories中,添加C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include

如下图所示:

到此,所有的配置都已经完成了。

O(∩_∩)O~

11、创建工程

在Visual Studio 2010 菜单选择“file|new|project(文件|新建|工程)”,在打开的新建项目窗口的“已安装的模板”一栏中选择“NVIDIA|CUDA”,类型选择为“CUDA 5.0 Runtime”,见下图。

在“名称”中输入工程名后,点击确定。可对系统提供的kernel.cu 示例进行编译运行,运行结果如下图。

将kernel.cu中的main函数重命名后,添加新的.cu文件,写入如下代码:

#include< stdio.h>
#include "cuda_runtime.h"
#include "device_launch_parameters.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()
{
	if(!InitCUDA())
	{
		return 0;
	}
	printf("HelloWorld, CUDA has been initialized.\n");
	return 0;
}

用 Ctrl+F5 运行,通过nvcc编译成功,输出结果:


成功!!


抱歉!评论已关闭.