2008年11月8日 星期六

Cuda 程式初體驗 - I

在架構好cuda平台以及開發環境之後,我們就來練習cuda的程式吧!

  1. 如果安裝好 cuda wizard for visual studio 2005 的話!你將會可以再開新專案的地方看到 CUDA WinApp的選項



     

  2. 當按下確定鍵之後!Cuda專案精靈便會引導你建立一個新的Cuda專案



     

    選擇"下一步"


     

    接下來會看到一些進階的設定,在此我們不做變更,直接選擇 "Finish"



     

  3. 建立完專案之後,你會發現方案總管理面已經有一個 sample.cu的檔案,cuda的compiler吃這個檔案 :p



     

    接著我們將sample.cu打開,其實裡面是一個cuda 專案精靈幫我們建立的一個Hello cuda程式,但是由於稍嫌複雜

    所以我在這邊寫了一個程式碼稍微少一點點的程式,你可以把原本的程式碼清除並貼下以下的程式碼。

sample.cu

#include <stdio.h>

#include <stdlib.h>

#include <cuda_runtime.h>

#include <cutil.h>


 

//cuda function

__global__ static void CUDAer(char* testPtr)

{

testPtr[threadIdx.x] = 'A' + threadIdx.x;

}


 

int main(int argc, char* argv[])

{


 

    char *testPtr = 0;

    char test_Array[26] ={0};

int i;

    cudaMalloc((void**) &testPtr, sizeof(char) * 26);


 

    CUDAer<<<1,26>>>(testPtr);


 


 

    cudaMemcpy(&test_Array, testPtr, sizeof(char) * 26, cudaMemcpyDeviceToHost);

    
 


for(i=0;i<26;i++){

printf("%c", test_Array[i]);

}


 

    cudaFree(testPtr);

system("pause");

    return 0;

}


 

  1. 接著按下編譯並執行程式,就可以看到以下的畫面了J


    從上面的程式可以知道,這是一個從A印到Z的程式

    至於程式的內容是甚麼呢!下回再做補充:P

2008年10月26日 星期日

Threading and Parallel introduction

Java and Threading

這是一份介紹Java 和Thread運作的簡報

根據上面的內容找尋相關資訊可以讓你一步一步學習如何從沒有Java環境到寫出多執行緒程式






Online prev. http://docs.google.com/Presentation?id=dhqv99nf_37f73fxkcd





Thread

Thread 程式的code review.

使用Java


Online prev. http://docs.google.com/Presentation?id=dhqv99nf_38f3fc4t7w



Thread performance

計算機組織與結構 MIPS converter multi-threading的效能報告





Online prev. http://docs.google.com/Presentation?id=dhqv99nf_42gh8tk2ww

2008年10月3日 星期五

CUDA install

Step 1. 下載並安裝最新版本的Driver ,toolkit and SDK.

請到以下連結,並選擇合適的作業系統下載 (我所使用的平台為Microsoft Windows XP)

http://www.nvidia.com.tw/object/cuda_get_tw.html


點選完作業系統並按下搜尋鍵之後會出現以下畫面

請點選CUDA 2.0下方的 三個 圖示下載 Driver , Toolkit and SDK.


請注意驅動程式版本號為 (117.84)

為什麼要特別注意呢,其實說來話長。

我上一次安裝失敗 就是裝了之前CUDA 2.0 beta版本的driver ,toolkit and SDK


結果老師的電腦和辛辛苦苦建置好的

黃金工作站(他很貴,我很尊敬他,特此挪抬處理)

完全無法跑出我寫好的程式,也因為這樣,所以我一定要把每個步驟都要好好記下來!不可以再出錯了!

(會想到用Blogger發佈文章也是在找一個快速的紀錄方法,我覺得這個方法比power point快多了,但是隱密性相對低了一點。)

好了 廢話不再多說!附上目前我在工作站安裝的檔案列表,請比對是否正確!

    Driver : NVIDIADisplayWin2K(177_84)Int.exe

    Toolkit : NVIDIA_CUDA_toolkit_2.0_win32.exe

    SDK : NVIDIA_CUDA_SDK_2.02.0811.0240_win32.exe

下載完成之後 請依序安裝檔案

    Driver (需要reboot) ------> Toolkit ------> SDK


 

Step 2. 安裝Visual Studio 2005

不要安裝 Visual C++ 2005 Express

乖乖的跟著我一起安裝 Visual Studio 2005 吧

雖然我看了很多文章,研究過恨多種裝法 (甚至還想過直接拿CUDA toolkit裡的 nvcc compiler去編譯檔案!只差臨門一腳,研究完了再發一篇分享 :P)

如果手邊沒有 Visual Studio 2005 的話,請自行準備一套虛擬光碟軟體 Ex: Daemon Tools

然後加我的MSN 並輸入通關密碼 (Who is Bruce? :P)

我會想辦法傳送迷樣的兩個 iso 檔和 檔名叫做 SN 的純文字文件給你。


 

Step 3. 設定 build rule

甚麼是 build rule呢? 簡單來說就是 "建置規則" (路人 : 哪有人直接翻譯的 ˋˊ)

建置規則就是當你要建置專案 的 compile 規則

建置規則會寫一些指令去呼叫compiler去compile你的程式而且根據建置規則的不同,compile時所下的參數也不同!

所以我們要找一個專屬於CUDA in Visual Studio 2005 適用的建置規則來用!

根據 [使用 Visual Studio 2005 建立新 CUDA 專案] 一文中提到


 

其實在 CUDA SDK 的目錄中,就有提供了一個官方的 build rule,位於「C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\common\scripts」底下,檔名是「nvcc.rules」。(安裝 CUDA SDK 會不會自動把這個目錄加到 VisualStduio 的設定裡 Heresy 到是忘了)


 

不過 Heresy 使用這個 rule 似乎沒辦法正確編譯;所以 Heresy 是改用《Simple CUDA build rule for Visual Studio 2005》的 rule。


 

所以依循文章的內容以及其附上的連結 Simple CUDA build rule for Visual Studio 2005 我們立即下載此build rule並解壓縮

裡面會有兩個檔案 如下圖所示



 

下載完之後請打開你的 Visual Studio 2005

並依圖做以下的動作

工具(T) -> 選項(O)


打開 專案與方案 並選擇 VC++專案設定 ,在 規則檔搜尋路徑輸入下載回來 build rule存放路徑 設定完畢請案確定結束此對話方塊



 

Step 3. 安裝CUDA app Wizard

為了要方便建立一個CUDA的專案,並更容易將CUDA的專案發布及建置,參考 CUDA VS2005 Wizard 1.2, New version of the CUDA VS2005 wizard

有一位來自內地的高手已經寫了一個精靈,只要安裝他之後。就可以輕鬆的在Visual studio 2005 建置一個 CUDA專案了

附上脫褲子放屁的安裝步驟圖

點選
I Agree (
當然你也可以按下Cancel 並遠離快樂的CUDA之路 Orz)


劈哩啪啦!

接著就安裝完成了 :P (超級無敵簡略…)


 

Step 4. 嘗試建立一個新的專案並套用CUDA build rule

嗯!現在我們很艱辛的到達了這邊,我們來嘗試開個專案吧!

看著下面圖,跟著我來一起動一動…

按下 檔案(F) -> 新增(N) -> 專案(P)


在新增專案對話框中

專案類型欄位 請選擇 Visual C++

選擇之後會再右側的 範本欄位 中看到 CUDA WinApp 選項 ,點選之後請按確定


接著出現以下對話框 按下一步


因為我們要開發的是一個普通的 Console application 所以我們可以直接按下 Finish

(其實在上一步的時候就可以按下Finish 但是我要讓大家知道其實有還有很多種 Application type可以選的)

你也可以利用它來開發MFC應用程式 :P,但是目前我還沒看到MFC 程式的相關文章 :(


選擇完畢之後會在畫面右側顯示如下圖的方案總管列表


此時請對著你的專案點選右鍵 (本圖範例為 project 3,實際狀況依你取的application 名稱而有所不同)

選擇 自訂建置規則


此時你會看到如下圖的畫面

在可用的規則檔的清單中有兩個CUDA 的選項

請點選 "路徑"你在之前步驟設定的那個取消選取原本的 CUDA 建置規則 並按確定

修改前

修改後


 

Step 5. 設定連結器

有些google文章少的人會在上一步就停下來並嘗試著建置他的專案了

但是他會發現一直出現以下幾個錯誤

找不到 $(CUDA_COMMON_LIB_PATH)

找不到 $(CUDA_COMMON_INC_PATH)…諸如此類。

想必一定是電腦環境變數沒有設定好,其實不然!

而是Visual Studio 2005 和CUDA wizard設定還有些問題

解決方法如下

點選已建置的任何一個專案 並按下右鍵 選擇 屬性(R)



 

在左邊選擇 組態屬性 -> 連結器 並在右邊點選 其他程式庫目錄 右邊的 按鈕


原本的設定如下圖 請修改 並改變排序之

將原本的 $(CUDA_COMMON_LIB_PATH)

修改為 $(NVSDKCUDA_ROOT)\common\lib

並按 修改其排序


改變過後的設定



 

Step 6.開始CUDA

恭喜你你已經完成了地球上數一數二難的的任務了

你的CUDA開發生活吧:) (天阿我好累awww現在三點四十七分了…)

First Draft

Welcome to my CUDA blog!

The blog is for CUDA experience.

We use CUDA to solve our problem, such as parallel computing and graphic computing.


Jona.tw : Ok, may I speak Chinese?

Fake Bruce : Sure!

Jona.tw : 那我就不客氣了!! GAGAGAGA


首先我要重新彙整我的資料!

關於 CUDA 的安裝方式

我覺得我講得不夠詳細,而且實作的次數也不多!

所以我特地再寫了一篇安裝方式。

不過這是First Draft , 所以這一篇還不能講怎麼安裝CUDA kerker (按: kerker = 科科).


Muhahahahahahahahahaha