CUDA編程介面(一)------一十八般武器------GPU的革命

來源:互聯網
上載者:User

序言:所謂一十八般武器,不同的年代又有不同的說法,最早的漢武年間的:矛、鏜、刀、戈、槊、鞭、鐧、劍、錘、抓、戟、弓、鉞、斧、牌、棍、槍、叉。到三國的:九長:刀、矛、戟、槊、鏜、鉞、棍、槍、叉;九短:斧、戈、牌、箭、鞭、劍、鐧、錘、抓。再到明清的:弓、弩、槍、刀、劍、矛、盾、斧、鉞、戟、黃、鐧、撾、殳(棍)、叉、耙頭、錦繩套索、白打(拳術)。《水滸傳》裡的:矛、錘、弓、弩、銃、鞭、鐧、劍、鏈、撾、斧、鉞、戈、戟、牌、棒、槍、扒。今天的武術屆又有:刀、槍、劍、戟、斧、鉞、鉤、叉、鞭、鐧、錘、抓、鏜、棍、槊、棒、拐、流星。400多種古代冷兵器時代的武器,常用的也只有這麼多種。也就像我們的API一樣,API有無數多個,你自己都可以給自己造幾個API出來,常用的,或者就那麼多個。要打天下也不能扛著鋤頭,竹竿幹吧。秦國之所以能統一六國,在武器上的統一,提供同一個的型號的武器裝備(看秦的曆史,就可以發現所有的兵器都是同一型號生產,弓弩上的器件可以互換,從兵馬俑坑中找到的劍戟,箭頭的尺寸誤差很小,都可以互換),也是他能戰勝其他六國的很好的基礎。

本文:

子曰:工欲善其事,必先利其器。我們要把顯卡作為通用平行處理器來做並行演算法處理,就得知道CUDA給我提供了什麼樣的介面,就得瞭解CUDA作為通用高效能運算平台上的一十八般武器。(如果你想自己開發驅動,自己寫開發庫- -那我不得不佩服你很有時間,想必也不會有很多人想自己在去實現一個CUDA吧,呵呵,雖然實現一個也不是太難)。書接上回《CUDA硬體實現分析(二)------規行矩步------GPU的革命》前面我們講到了一些簡單的CUDA的C語言擴充的規則,下面就具體來講解CUDA給我聽哦買提供了多少方便的API函數。在開發CUDA的時候,CDUA也給我們提供了一套完整的API函數。從一開始就在想,怎麼把這些枯燥的API函數,或者這CUDA的一十八般武器說得清楚。如果按照中文的翻譯的第四章那麼講解,或許暈的人更多,只知道這些是武器,而不知道什麼武器是用來幹嘛的。從序言看到,十八般武藝所列兵器大同小異,形式和內容卻十分豐富。有長器械,短器械;軟器械、雙器械;有帶鉤的、帶刺的、帶尖的、帶刀的;有明的、暗的;有攻的、防的;有打的、殺的擊的;也有射的、擋的。我們來看CUDA的時候,一看到這麼多的API函數,先來給他分一些類,然後才好徐徐道來。

一、API總結:

1.通用的一些介面,前一章節也有提高過:數學函數,時間函數,同步函數,原子操作;

2.控制Device的函數;就是得到裝置資訊,管理裝置資訊的函數。設定那塊顯卡工作,得到那塊顯卡的效能。這裡有分為driver層級的API和runtime層級的API;有人會問什麼是driver層級和runtime層級請看圖:

這個圖我們在前一章已經看到過了。不會不清楚吧~- -!driver層級的API就是提供驅動層級的API,就像寫驅動一樣的感覺。Runtime層級的API就是封裝了一些Driver層級的API,按照一些常規的方法封裝了一些底層的API。其實這裡就像我們平時生活中一樣,最開始對汽車不熟悉的時候,買一輛車回來能開就ok了;能用熟悉Runtime層級的API就行了。慢慢的,感覺汽車內建的音箱不好,自己就開始買一些原始裝置回來改裝車;慢慢的感覺整車都有點不爽了,然後慢慢的發現想修改發動機,修改外形……就開始改裝車了,這樣的工作,就得從Driver層級開始做了,玩得更進階一些的就自己設計圖紙,自己來用一些零組件來組裝車了。這就是Driver API和Runtime API的關係。Runtime的在開始的用起來一般都比較方便,慢慢的發現如果高層(high-level)的Runtime API用起來不方便,就用底層(low-level)的Driver API來自己做改裝的車……

3.記憶體管理,host的記憶體,device的記憶體,global的記憶體,constant第,shared的,這裡會分出來一章單獨講Texture(紋理)記憶體的使用,說實在的Texture也是記憶體~非要搞那麼神秘,沒辦法,也只好拿出來單講……PS:記憶體管理也分為Runtime層級的API介面,和Device層級的API介面。

4.程式運行控制:像Stream,Event,Context, Module, Execution control這樣的咱都把歸類到運行管理的。這裡也得分清楚有Runtime層級的,也有Driver層級的。

5.好了,這裡就剩下OpenGL和Direct3D的介面函數了,其實把,這也是為了方便做圖來用的,主要是OpenGL和DX都已經成了圖形顯示方面的標準,so~顯卡也得照顧這兩個東東了,要不然顯卡自己畫……hoho要是真自己再來實現OpenGL或者DX,CUDA就真的會頭大了,hoho~~還好就借用現有的圖形顯示的程式來做就行了。牛頓人家都說是站在“牛頭人”(巨人)的肩膀上才能看得更遠……咱也不要非自己費那麼大的經去做一些無用功。想想吃不飽的時候沒看到多少人減肥的,倒是現在吃得好了,減肥的人多了……長胖了去健身房減肥,始終感覺有點怪怪的……拿錢去做無用功,(有用功就是減肥)不過現在也有人在做實驗,把多餘的這些減肥的人的能量轉化為電力……扯遠了……提一下:他也有兩個層次的API,有Runtime層次的,也有Driver層次的。

好了,差不多就這5個部分的API了。下面我們就來個個講解CUDA的十八般武器。

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。