人人IT網

人人IT網

當前位置: 主頁 > 編程語言 > C >

VS2010中配置CUDA5.0

時間:2012-12-31 12:32來源:Internet 作者:Internet 點擊:
1、安裝之前必須確認自己電腦的GPU支持CUDA。在設備管理器中找到顯示适配器(Display adapters),找到自己電腦的顯卡型號,如果包含在http://go.rritw.com/www.n

1、安裝之前必須確認自己電腦的GPU支持CUDA。在設備管理器中找到顯示适配器(Display adapters),找到自己電腦的顯卡型號,如果包含在http://go.rritw.com/www.nvidia.com/object/cuda_gpus.html的列表中,說明支持CUDA。


2、下載NVIDIA CUDA Toolkit ( http://go.rritw.com/www.nvidia.com/content/cuda/cudadownloads.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://go.rritw.com/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 函數是高亮的,使用函數名符號就會自動提示函數全稱,参數類型等信息。


9、其餘的重要配置:

在“Additional Libraries Directories”下添加“$(CUDA_PATH_V4_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編譯成功,輸出結果:


成功!!




From:CSDN
頂一下
(0)
0%
踩一下
(0)
0%
------分隔線----------------------------
發表評論
請自覺遵守互聯網相關的政策法規,嚴禁發布色情、暴力、反動的言論。
評價:
表情:
驗證碼:點擊我更換圖片
欄目列表
推薦內容