CUDA 程式設計(1) -- 簡介 - 顯卡

Ursula avatar
By Ursula
at 2008-09-25T08:32

Table of Contents

剛好老師最近要我為 group 撰寫中文的教學文件,準備下學期教學弟妹們CUDA程式設計,所以順便 po 上來和大家分享,有什麼
疏漏之處,請各位大大不吝指正。


※ 引言 ※

從軟體設計角度來看,CUDA 寫作並不困難,困難之處在於如何最佳化,它需要了解不少硬體的細節。一般而言未最佳化的程式
在 GPGPU 上面執行,可以比傳統的 CPU 快上 5~10 倍,而最佳化過的程式,往往還能再增速 5~10 倍,達到 25~100 倍的效能。

CUDA 和傳統 C++ 最大的差異在於「平行化的程式設計」vs.「序列化的程式設計」,例如傳統上透過迴圈執行數千次的程式碼,
在 CUDA 上就可以將它拆解成數百個同時執行的執行緒,每個執行緒只執行十幾次而己,因此產生數十到數百倍的效能。

CUDA 是在傳統 C++ 的基礎上,加入一些延伸語法,以及輔助的函式庫,而形成的一種程式語言,一般而言只要熟悉 C 或 C++,
就很容易上手 (可能比 Java 容易上手,因為傳統 C/C++ 的函式庫都可以用),編譯好的程式碼,也可以跟其它語言做不錯的聯結。

在接下來幾篇文章中,我們從簡單的軟體設計角度開始,介紹 CUDA 如何寫作,逐漸帶出硬體細節,然後介紹最佳化的一些技術。


※ 第一章CUDA程式如何執行 ※

◆ 名詞 ◆

主機 (host) :插顯示卡那台PC。
裝置 (device):顯示卡。
核心 (kernel):在顯示卡上執行的程式碼區段。


◆ 執行流程 ◆

因為 GPGPU 屬於外部裝置(device),其機器指令有別於傳統 CPU,所以程式核心(kernel) 必須經過特殊編譯後,在執行時期和所需的
資料由主機(host)送到裝置中,並在執行完成後,將結果資料傳回主機,流程如下。



主機(host) PC 裝置(device) 顯示卡


傳送資料到顯示卡記憶體中
(1) 主機記憶體 ------------------------------------------>> 顯示卡記憶體


傳送程式碼(kernel)到顯示卡
(2) 主機記憶體 ------------------------------------------>> 顯示卡記憶體


(3) 主機做其它的事 or 閒置 執行顯示卡中的程式(kernel)


傳回執行結果
(4) 主機記憶體 <<------------------------------------------ 顯示卡記憶體



實際上,CUDA 提供了很多 API 簡化這些流程,包括記憶體在兩者間的搬移,顯示卡記憶體的配置與釋放,kernel 設定、啟動與同步
等,所以上面的每一個步驟其實就是去叫用CUDA的函式而已。


◆ 編譯流程 ◆

簡易的編譯流程如下,只要先準備好副檔名為 .cu 的 CUDA 程式碼檔案,然後使用CUDA的編譯器 (nvcc) 來編譯即可,進階的編譯流程
以後再介紹。


nvcc
.cu 檔案 ----------> 可執行檔 or 目的檔


其中 .cu 檔案可以同時包含在 host 中執行的傳統 C++ 程式碼,以及在 GPGPU 中執行的 kernel 程式碼。



※ 後續章節 ※
◆ 第二章 CUDA 安裝 ◆
◆ 第三章 簡易 kernel 寫作 ◆
◆ 第四章 CUDA 的記憶體分類 ◆
◆ 第五章 CUDA 的函式種類 ◆

... (可能還會調整)


※ 名詞解釋 ※
(1) GPGPU (General purpose graphics processing units) 泛用圖形處理晶片
(2) host 主機:指插上顯示卡的那台機器。
(3) device 裝置:主機之外的其它單元,在這裡指顯示卡。
(4) kernel 核心:在GPGPU中執行的程式碼區段。
(5) API (Application Programming Interface) 程式設計介面,就是一組函式庫。
(6) nvcc : CUDA 的compiler,可到 nVidia 的官網免費下載 http://www.nvidia.com/object/cuda_get.html
(7) .cu 檔案:CUDA的程式碼檔案,基本上是 .cpp 檔案的延伸,除了傳統C++程式碼之外,亦可包含kernel程式碼,透過 nvcc 編譯
成目的檔或可執行檔。



--
Tags: 顯卡

All Comments

Jacky avatar
By Jacky
at 2008-09-28T16:57
PUSH PUSH!!
Franklin avatar
By Franklin
at 2008-09-28T23:41
推長知識...
Belly avatar
By Belly
at 2008-09-30T23:35
受用了~推!
Gary avatar
By Gary
at 2008-10-01T23:04
對齊不了也要推....
Barb Cronin avatar
By Barb Cronin
at 2008-10-02T16:18
好酷
Cara avatar
By Cara
at 2008-10-07T14:53
推推...
Andy avatar
By Andy
at 2008-10-08T13:49
可以請問是哪間學校在做的cuda研究嗎?
Bethany avatar
By Bethany
at 2008-10-10T14:32
目前nVidia的驅動就是CUDA complier出來的嗎?
Tristan Cohan avatar
By Tristan Cohan
at 2008-10-12T08:58
縮起來比較方便 http://0rz.tw/314QO
Olive avatar
By Olive
at 2008-10-16T16:52
這個可以拿來做專題喔
Genevieve avatar
By Genevieve
at 2008-10-17T20:44
看板長知識
Lauren avatar
By Lauren
at 2008-10-18T08:42
CUDA寫的程式歸CUDA,Dirver歸Driver,兩個是不一樣
光兩個程式定位就不同了...
Catherine avatar
By Catherine
at 2008-10-18T11:23
我一直覺的CUDA很酷~
Kelly avatar
By Kelly
at 2008-10-20T19:46
看不懂 end推
David avatar
By David
at 2008-10-25T07:49
CUDA似乎偏向video & audio的encode 跟底層的driver不同?
Daph Bay avatar
By Daph Bay
at 2008-10-28T05:01
http://www.nvidia.com/object/cuda_universities.html
有好多美國的名校有研究和教學CUDA 台灣哪所學校有阿?
Annie avatar
By Annie
at 2008-10-28T23:41
好棒喔....好期待第二章!
Kelly avatar
By Kelly
at 2008-10-30T18:59
CUDA是在Application Layer做Compile程式,而Dirver
Todd Johnson avatar
By Todd Johnson
at 2008-11-03T22:19
是屬於較底層的程式,還要配合硬體位址做設計
Ethan avatar
By Ethan
at 2008-11-08T12:02
Phat~~ f大了解的真多 想必是科班出身的吧^^
Iris avatar
By Iris
at 2008-11-10T00:57
我們專題本來也是打算做CUDA,不過被另一組搶先一步
Freda avatar
By Freda
at 2008-11-13T12:16
順便提一下,美國UIUC有把完整的CUDA課程講義放上網
George avatar
By George
at 2008-11-14T22:54
期待續文~
Tristan Cohan avatar
By Tristan Cohan
at 2008-11-16T19:08
請問樓上是哪間學校阿@@
Genevieve avatar
By Genevieve
at 2008-11-17T21:50
想學認真這門技術 我看只能到美國了 伊利諾香檳很優秀^^
Quintina avatar
By Quintina
at 2008-11-18T17:11
我是清大的. 我們是做大學部專題,用CUDA協助EDA運算
Emma avatar
By Emma
at 2008-11-19T07:57
那個倍數有點誇張 要看是做什麼運算 差很多阿
Edwina avatar
By Edwina
at 2008-11-20T03:07
NV網站上那些很大數字的倍數應該都只記kernel時間而已XD
Valerie avatar
By Valerie
at 2008-11-24T10:55
UIUC的CUDA講義連結在哪裡啊?
Mia avatar
By Mia
at 2008-11-28T02:13
請問是清大資工的嗎?
Robert avatar
By Robert
at 2008-11-30T17:07
台大今年有開課喔,可惜交大似乎沒有 看有沒有老師有興趣可
以去找NV贊助(布過NV最近裁員了說..
Harry avatar
By Harry
at 2008-12-05T12:25
我比較想知道正確在VS2005開發的設定法 "編譯流程"那步驟..
Dinah avatar
By Dinah
at 2008-12-10T01:24
那個編譯要用NV的Compiler吧?,可以用其他的編譯器
Robert avatar
By Robert
at 2008-12-10T14:12
來編譯嗎?
Valerie avatar
By Valerie
at 2008-12-14T13:50
是用NV的compiler阿.只是在VS2005開發CUDA程式要做一些設定
Ivy avatar
By Ivy
at 2008-12-16T22:13
不知道南開科技大學會不會輔助
Faithe avatar
By Faithe
at 2008-12-21T05:19
我是清大電機的,不過是偏資工走向的 XD
UIUC的課程網頁: http://courses.ece.uiuc.edu/ece498/al1/
Genevieve avatar
By Genevieve
at 2008-12-21T17:16
是許雅三老師的學生嗎XD
Una avatar
By Una
at 2008-12-24T18:32
http://0rz.tw/884Lt Visual Studio設定方式
Christine avatar
By Christine
at 2008-12-25T12:51
不是耶,我是劉靖家老師的大學專題生
Irma avatar
By Irma
at 2008-12-26T10:51
好期待下一章喔 >///<
Jake avatar
By Jake
at 2008-12-26T19:49
我一年半前就試過用CUDA解EDA了..50幾倍..不過懶的寫paper..XD
如果對cuda有興趣的or有寫過的..大家可以來交流一下啊~~
Victoria avatar
By Victoria
at 2008-12-28T15:00
另外要cuda在windows上有5秒的限制 建議用linux會穩很多
Hedda avatar
By Hedda
at 2008-12-29T18:44
(尤其是EDA這種simulation很容易超過5秒...)
Jake avatar
By Jake
at 2009-01-01T01:33
推!!!!!
Rachel avatar
By Rachel
at 2009-01-04T14:39
神人!! 快拜!!

ATI Catalyst 8.8有中文語系的嗎?

Adele avatar
By Adele
at 2008-09-22T10:07
※ 引述《reesion (ree)》之銘言: : 昨天換了ATI Catalyst 8.9,結果Spore整個畫面都被切得亂七八糟 : http://img254.imageshack.us/img254/8972/spore20080921223219dk9.jpg : 看國外的討論應該是8.9作祟,因為 ...

ATI Catalyst 8.9 Display Driver

Ethan avatar
By Ethan
at 2008-09-18T07:52
download: http://ati.amd.com/support/driver.html release note: http://tinyurl.com/3uyuhw New Feature: ‧ Catalyst™ Control Center: New Display mode sup ...

為什麼顯卡總是強的先出?

Audriana avatar
By Audriana
at 2008-09-12T12:37
因為CPU跟GPU的產品線分別不一樣 CPU是同樣的製程,挑品質好晶片的上高時脈(同核心同製程的產品ex 8200 8300 8400) 而這樣的情況下當然一開始製程還沒很成熟時,能飆上的時脈比較低 而後期因為經驗累積製程改良,漸漸做出來的晶片水準都越來越高了,預設時脈就飆 上去了,這種狀況其實在顯卡也是會有 ...

780G CrossFire 混合交火測試 XP篇

Madame avatar
By Madame
at 2008-09-06T03:43
搭上討論的順風車... AMD x64 Athlon 5200+ (2.7G) GIGABYTE MA78GPM-DS2H A-Data DDR2 800 2G ASUS EAH3450 256MB DDR2 Hitachi 80G IDE WindowsXP SP2 催吐劑8.8 ...

電源瓦數計算機

Frederic avatar
By Frederic
at 2008-09-05T15:47
有鑒於目前有中文化版的PSU計算機如Asus出的那些更新速度實在太慢加上誤差值頗高 往往找不到較新的配備的選項,所以現在還是回歸到國外網站的卡實在 英文看不懂沒關係,照下面按就對了 先連到這個網站http://www.extreme.outervision.com/psucalculatorlite.jsp ...