cuda4.1+vs2010配置與安裝

轉載:轉自miaomiao8204,http://blog.csdn.net/miaomiao8204/article/details/7277354


安裝環境:

win vista 32位   nvidia公司的顯卡

安裝前提:

visual studio 2010

Visual Assist X

安裝步驟:

1. CUDAToolkit4.1下載地址 在該地址下一次下載CUDA Toolkit,DeveloperDrivers,GPU Computing SDK後,進行安裝。

2.首先安裝  Developer Drivers,裝ver. 286.16版,這是最新版本驅動,初次安裝爲了少出錯,最好安裝比較新版本的驅動。

3.其次安裝CUDA Toolkit4.1,CUDA 4.1的新特性可以參見其Release Notes。

4.最後安裝GPU Computing SDK,默認安裝路徑可能是

C:\ProgramData\NVIDIACorporation\NVIDIA GPU Computing SDK 4.0,記這個路徑爲SDK_PATH。建議不要按默認路徑安裝,否則文件不好查找。

 

現在可以用VS打開CUDA SDK的例子了,在這之前,兩個工具庫可以先生成一下。

a.  使用VS2010打開SDK_PATH \ c\common\cutil vs2010.sln, VS2010選“Build|Batch Build…”,“SelectAll”,生成所有配置需要的lib.如果遇到“Cannot 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.libXX:32 /64 [D]debug模式  

lib存放的位置:SDK_PATH\share\lib\(Win32|x64)

注:這個項目編譯時會提示有兩個.cpp找不到,直接把他們從項目裏移去即可。因爲同名的.h文件裏已經有完整代碼了。

 

測試例子:VS2010 打開SDK例子:deviceQuery, matrixMul各種配置均可編譯執行成功, CUDA的基本配置就完了。

 

創建自己的CUDA項目

1.  創建一個Win32 console application 程序 cuda1,選擇空項目,然後添加一個源文件cuda1.cpp, 改名字爲cuda1.cu。

2. 在項目名稱上右鍵選擇“生成自定義…”,在對話框中選擇CUDA 4.1,這會添加對CUDA C/C++文件(*.cu)的支持。

 

3.  選擇cuda1.cu文件,右擊選擇“屬性”打開屬性對話框,在"常規"屬性頁下,將“項類型”改爲”CUDA C/C++”。

 

4.  選擇菜單項“項目”打開“屬性”對話框,選擇“連接器|常規” 屬性頁,在“附加庫目錄”下添加“$(CUDA_PATH_V4_1)\lib\$(Platform);”

 

5.  打開“連接器|輸入”屬性頁,在“附加依賴項”中添加“cudart.lib;

 

6. 向cuda.cu中添加一些代碼。

#include <stdio.h>
#include <cuda_runtime.h>

 bool InitCUDA()

{
    int count;
    cudaGetDeviceCount(&count);

    if(count == 0)

    {

        fprintf(stderr, "There is nodevice.\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 nodevice supporting CUDA 1.x.\n");

        return false;

    }

    cudaSetDevice(i);

    return true;

}

int main()

{

    if(!InitCUDA())

    {

        return 0;

    }

    printf("HelloWorld, CUDA has beeninitialized.\n");

    return 0;

}

用 Ctrl+F5 運行,通過nvcc編譯成功,輸出結果。

 

CUDA C/C++關鍵字和函數高亮顯示:

在上面cuda.cu文件中發現CUDA C/C++的關鍵字__global__等沒有高亮顯示。下面進行CUDA C/C++關鍵字和函數的語法高亮顯示,配置Visual AssistX 函數高亮,代碼提示等功能。

下面是關於代碼高亮的設置。共三個設置:

1.   .cu文件中C/C++關鍵字高亮

這個設置是讓VS2010編輯.cu文件時,把.cu文件裏的C/C++語法高亮。

設置方法: 在VS2010的菜單 依次點擊:“工具|選項|文本編輯器|文件擴展名”,在這個界面裏: “編輯器”下拉框選“MicrosoftVisual C++”,在“擴展名”文本框輸入.cu 點擊“添加”按鈕,重複工作把.cuh 添加爲vc++類型,點擊確定按鈕。 把全部.cu文件關閉,再打開,.cu文件C++關鍵字就高亮了。如果不行就重啓VS2010。但是CUDA的關鍵字還是黑色的,下一步把CUDA關鍵自高亮顯示。

 

2.   CUDA關鍵字高亮

爲了讓CUDA的關鍵字,如__device__、dim3之類的文字高亮,需要如下步驟:

把SDK_PATHD\C\doc\syntax_highlighting\visual_studio_8usertype.dat複製到X:Program Files\Microsoft Visual Studio 10.0\Common7\IDE目錄下  

這裏 X:是安裝VS2010盤符。

 

再次強調:SDK_PATH要換成你安裝SDK的實際路徑,不要直接使用這個字符串。

VS2010需要重啓,重啓後打開.cu文件,CUDA的關鍵字應該變成藍色了。

 

3. CUDA 函數高亮,及CUDA函數輸入代碼提示
 實現這個功能就要使用VAssistX了。 首先安裝支持VS2010的Visual AssistX, 在CUDA 安裝前、後安裝都行。需要兩步實現需要的功能:

a) 讓Visual AssistX支持CUDA函數高亮和代碼完成。在VS2010菜單裏依次點擊: “VAssistX->Visualassist XOptions->Projects->C/C++Directories”在這個界面的“Platform”下拉框選 Custom,在“ShowDirectories for..“下拉框選 Other include files, 然後在下面的輸入框裏,新建、添加三個路徑,點擊確定,三個路徑分別如下:

       SDK_PATH的\c\common\inc
       SDK_PATH的\shared\inc
       X:\ProgramFiles\NVIDIA GPU ComputingToolkit\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\WholeTomato\VisualAssist X\VANet10。在右邊找到ExtSource項目,鼠標右鍵選修改,在原有文字後添加如下文字:.cu;.cuh; 確定後
 關閉註冊表,重新打開vs2010,VisualAssistX開始支持.cu及.cuh文件的語法高亮及代碼完成。此時.cu文件的CUDA函數是高亮的,使用函數名符號就會自動提示函數全稱,參數類型等信息了。

 

注:

經過上面的安裝,開發程序應該沒問題了,但會發現有如下的問題:

1. VS2010顯示.cu文件時,有很多CUDA函數下有波浪線

2. 在.cu文件裏使用VS2010的“Go to definition”功能查無法找到CUDA函數的定義。

這兩個問題的原因是VS2010不認識這些函數,沒有指定它們在那個頭文件裏包含的。解決方法其實是一樣的,把CUDAtookit 和CUDA SDK的頭文件路徑加到VS2010的VC++目錄裏面。也可以在.cu文件中加入相應頭文件,本例即這樣解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章