VS2012安裝CUDA
原創 2013年10月09日 23:03:16
- 10672
前提安裝:
Visual Studio 2012
Visual Assist X
安裝步驟:
1. Nvidia顯示卡驅動,裝275.33版,這是最新版本驅動,初次安裝為了少出錯,最好安裝比較新版本的驅動。
2. Cuda Toolkit 4.0安裝,CUDA 4.0的新特性可以參見其Release Notes,其中包括了本文将要介紹的Thrust庫。
3. GPU Computing SDK 4.0 安裝,預設安裝路徑可能是
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0,記這個路徑為SDK_PATH.
4. Parallel Nsight 2.0 安裝,這個工具可以将GPU通用計算內建進Microsoft Visual Studio,能夠對使用CUDA C,OpenCL, DirectCompute, Direct3D, 和 OpenGL的應用程式進行調試和分析。
5.現在可以用VS打開CUDA SDK的例子了,在這之前,兩個工具庫可以先生成一下。
a.使用VS2010打開SDK_PATH \ c\common\cutil vs2010.sln, VS2010 選“Build|Batch Build…”,“Select All”,生成所有配置需要的lib.如果遇到“Can not open source file …”的錯誤,把檔案夾的隻讀屬性去掉。
目的:生成各配置需要的cutilxx[D].lib XX:32 /64 [D]debug模式
lib存放的位置:SDK_PATH \ c\common\lib\(win32|X64)
b.同上方法,打開SDK_PATH\share\ shrUtils_vs2010.sln 選“Build|Batch Build…”
目的:生成各配置需要的shrUtilxx.lib XX:32 /64 [D]debug模式
lib存放的位置:SDK_PATH\share\lib\(Win32|x64)
注:這個項目編譯時會提示有兩個.cpp找不到,直接把他們從項目裡移去即可。因為同名的.h檔案裡已經有完整代碼了。
c.測試例子:VS2010 打開SDK例子:deviceQuery, matrixMul各種配置均可編譯執行成功, CUDA的基本配置就完了。
CUDA C/C++關鍵字和函數高亮顯示:
在上面HelloWorldCuda.cu檔案中發現CUDA C/C++的關鍵字__global__等沒有高亮顯示,而且還有下劃曲線。下面進行CUDA C/C++關鍵字和函數的文法高亮顯示,配置Visual AssistX 函數高亮,代碼提示等功能。
下面是關于代碼高亮的設定。共三個設定
1. .cu檔案中C/C++關鍵字高亮
這個設定是讓VS2010編輯.cu檔案時,把.cu檔案裡的C/C++文法高亮。
設定方法: 在VS2010的菜單 依次點選:“Tools|Options…|Text Editor|File Extension”,在這個界面裡: “Editor”下拉框選“Microsoft Visual C++”,在“Extension”文本框輸入.cu 點選“Add”按鈕 ,重複工作把.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 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的關鍵字應該變成藍色了。
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\VANet11。在右邊找到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++目錄裡面。
建立自己的CUDA項目
1. 建立一個Win32 console application 程式 HelloWorldCuda,選擇空項目,然後添加一個源檔案HelloWorldCuda.cpp, 改名字為HelloWorldCuda.cu。
2. 選擇Project | Build Customizations…菜單,在對話框中選擇CUDA 4.0,這會添加對CUDA C/C++檔案(*.cu)的支援
3. 選擇HelloWorldCuda.cu檔案,右擊選擇Property打開屬性對話框,在General屬性頁下,将Item Type改為”CUDA C/C++”
注意:CUDA C/C++已經在屬性頁中出現了
4. 打開“Linker|Input”屬性頁,在“Additional Dependencies”中添加“cudart.lib;”
5. 向HelloWorldCuda.cu中添加一些代碼。…………
測試程式:
[cpp] view plain copy
- #include <stdio.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編譯成功,輸出結果。
"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\bin\nvcc.exe" -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl-version 2010 -ccbin