天天看點

VS2012安裝CUDA VS2012安裝CUDA

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關鍵自高亮顯示。

VS2012安裝CUDA VS2012安裝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的關鍵字應該變成藍色了。

VS2012安裝CUDA VS2012安裝CUDA
VS2012安裝CUDA VS2012安裝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定義的函數和類型就不會高亮和提示了。

VS2012安裝CUDA VS2012安裝CUDA

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函數是高亮的,使用函數名符号就會自動提示函數全稱,參數類型等資訊了。

VS2012安裝CUDA VS2012安裝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。

VS2012安裝CUDA VS2012安裝CUDA

2. 選擇Project | Build Customizations…菜單,在對話框中選擇CUDA 4.0,這會添加對CUDA C/C++檔案(*.cu)的支援

VS2012安裝CUDA VS2012安裝CUDA

3. 選擇HelloWorldCuda.cu檔案,右擊選擇Property打開屬性對話框,在General屬性頁下,将Item Type改為”CUDA C/C++”

VS2012安裝CUDA VS2012安裝CUDA

注意:CUDA C/C++已經在屬性頁中出現了

4.   打開“Linker|Input”屬性頁,在“Additional Dependencies”中添加“cudart.lib;”

VS2012安裝CUDA VS2012安裝CUDA

5. 向HelloWorldCuda.cu中添加一些代碼。…………

測試程式:

[cpp]  view plain  copy

  1. #include <stdio.h>  
  2. bool InitCUDA()  
  3. {  
  4.     int count;  
  5.     cudaGetDeviceCount(&count);  
  6.     if(count == 0)  
  7.     {  
  8.         fprintf(stderr, "There is no device.\n");  
  9.         return false;  
  10.     }  
  11.     int i;  
  12.     for(i = 0; i < count; i++)  
  13.     {  
  14.         cudaDeviceProp prop;  
  15.         if(cudaGetDeviceProperties(&prop, i) == cudaSuccess)  
  16.         {  
  17.             if(prop.major >= 1)  
  18.             {  
  19.                 break;  
  20.             }  
  21.         }  
  22.     }  
  23.     if(i == count)  
  24.     {  
  25.         fprintf(stderr, "There is no device supporting CUDA 1.x.\n");  
  26.         return false;  
  27.     }  
  28.     cudaSetDevice(i);  
  29.     return true;  
  30. }  
  31. int main()  
  32. {  
  33.     if(!InitCUDA())  
  34.     {  
  35.         return 0;  
  36.     }  
  37.     printf("HelloWorld, CUDA has been initialized.\n");  
  38.     return 0;  
  39. }   

用 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

VS2012安裝CUDA VS2012安裝CUDA