NVIDIA的CUDA ZONE專區,目前的CUDA已經到2.0版本,而且也提供對應的驅動以及工具程式還有SDK讓各位下載。
顯示卡的C語言
能夠支援CUDA技術的顯示晶片核心編號,還有更多只是小弟沒有收錄在同一張圖片內,詳情可以請各位上CUDA ZONE專區網站:https://www.nvidia.com.tw/object/cuda_home_tw.html#
CUDA是NVIDIA從2007年就開始推廣的技術,只是最近跟著PhysX物理加速這個技術被大量曝光,使得大家也注意到這個屬於程式設計應用範疇的專業技術。它採用了程式設計師界最流行的C語言相容架構,另外開發了很多工具程式例如:NVIDIA專用組譯程式,專用SDK程式碼範例等等。說實在話,小弟專科的程式語言是暑假還要來的那種人,所以由小弟來寫語言只怕笑掉一堆人的大牙,陷入無限的「迴圈」之中啊。但是即使如此,小弟仍然可以看得懂CUDA技術的主要核心價值,那就是把原本交給CPU運算的部分,經由轉譯程式後,可以讓GPU用最短的時間處理完畢,因此稱呼它為顯示卡的C語言是一點也不為過!
這是目前很多3D網站或者是一些影像處理的玩家使用CUDA程式撰寫出來的精選範例檔,目前可以看到有將近122個不同國家不同用途的開發者作品,有針對醫學,有的是3D繪圖等等。
為何要把CPU的工作搶過來?
目前總共有約30所全世界的有名學校參加了CUDA課程教學,其中也有應用Folding @Home的史丹佛大學研究室,至於在我們國內則是國家高速網路計算中心負責教學與培訓的工作。
NVIDIA這麼說是有其根據,因為CPU發展到目前,最多還是四個核心,而相較於顯示卡已經多到一百多個純量運算單元在一個晶片內,那麼能不能有效利用這些多出來的核心進行一些運算呢?我們可以這樣看,CPU負責的是整體、全面性的運算,把這個整體性的東西拆解成很多小的部分來單獨運算後再加以結合,如果速度可以比CPU快上許多,就的確有所作為。GPU運算的過程可能也與CPU稍微不同,因為架構也不同,這樣的特性讓GPU最適合處理「平行資料運算的工作」,讓所有不同資料的運算,都經由同樣的程式把所有不同的資料當作一個個獨立的程序,以平行化來進行加速運算。在這之前,能有效使用顯示卡的GPU都是透過OpenGL或者是DirectX來呼叫圖形程式函數庫,因此使用固定的Shader語言來得到設計師想要的加速運算效果,就是CUDA誕生之前的做法,但缺點是只能在既定的函數庫中使用固定流程,增加程式撰寫的困難點。
一套共八片教學DVD,內容都是非常精華的教學課程。
內容對於非程式開發人員來說,可能兩分鐘內就可以讓人睡著,對於寫程式的人,則是如獲至寶。
從介紹開始,一直到後面實作都相當精闢,而且解說的非常精彩。
相容於C語言的程式奧義
前面提到的CUDA 2.0 SDK下載安裝完後會多出這個東西在桌面,這裡面有各種的CUDA測試以及預先寫好的Sample。
如果是遊戲開發者的話,寫OpenGL或者是DirectX的語言函式庫基本上一定沒有問題的,不過要能有廣泛的推展到一般程式設計師都能使用的話,勢必要再創造一套方便好用的SDK以及相容於最流行的程式語言上,這麼一來程式設計師無須重頭學習適應,推廣的速度才能像野火燎原一般普及。NVIDIA基於這個利基點,在2007年左右推出了CUDA這套相容於C語言的組譯程式以及SDK套件,讓一般人也能透過撰寫C語言讓GPU也能提供它強大的運算能力。而使用NVIDIA組譯程式完成的C語言程式,程式碼仍然保存C語言架構,也無須擔心除蟲以及管理的問題,可以說使C語言的執行能力更上了三、四層樓那麼高啊!
例如這是流體動態模擬,用滑鼠去點去拉,水波紋就好像真實的動態一般的旋轉流動。
真正加入「CUDA」的繪圖晶片要算是G80以後了,這個時間剛好是DX10版本推出後,雖然以DX10的改良來說,有關Shader的指令集已經頗為接近一般程式語法,但它還是為3D繪圖專用,仍然跟你我知道的C語言是兩碼子事情;而CUDA的出現,一言以蔽之,就是利用你我都知道的C語言來達成控制G80繪圖核心的便利工具。
這是顯示卡的頻寬效能測試,沒有炫麗的圖形,全部都是數字呈現。
不過,對我們這種非開發人員來說,我們只能對於聲光效果的表現起共鳴,至於背景的程式丟了多少資料進去Shader運算則非所問。所以之前介紹的PhysX技術只能說是CUDA的其中一小部分而已,它只是證明了把物理運算這個程式碼利用GPU來處理後可以達到多棒的效果。當然,用CPU也一定可以執行運算,只是那結果就像是3DMark Vantage所演示的CPU執行GPU模擬運算的下場一般,FPS低到不行。
Folding @ home,現在已經是大家最耳熟能詳的應用之一了。
而除了PhysX這個令所有玩家驚豔的遊戲畫面以外,實際運用上還有相當多程式是可以使用CUDA語言組譯後把CPU做的事情丟給GPU處理,例如:影像處理相關,只要是修圖,影片壓縮、後製處理等等都是屬於平行運算的一種,而目前也有一家軟體準備在下一次改版後採用CUDA編寫的影片壓縮、轉檔、合併的程式,那就是TMPGEnc Express這套相當好用的影片轉檔壓縮以及後製程式。
這是Pre-sample盒裝,目前還沒上市。
日本的測試版有看到設定選項多出了NVIDIA CUDA 2.0的支援。
取代CPU?
GPGPU這麼強大,那麼你最後一定也會連想到這個問題,它是不是有可能取代CPU呢?其實就如同之前分析所言,GPGPU目前能夠大量處理的大都是平行運算,也就是相類似的資料運算,因此目前以圖形、影像的種類居多,而且它必須要仰賴DX10以及OpenGL才能運作。而CPU則是處理無相關的不同資料運算比較擅長,依此以短時間而言,想要取代CPU是不可能的事情。總之,牛丸各有得做,灑尿蝦就歸我做。我們期待NVIDIA能在很短時間的未來,讓我們看到更多的應用方式,才能夠大量滿足人們飢渴的視覺享受。
NVIDIA甚至還為了這個技術舉辦一場解碼大賽呢。 |