電腦GPU繪圖晶片的發展,一直是資訊半導體界注目的焦點之一,因為GPU的架構與運算能力隨著時間與技術的發展,在大量浮點運算應用層面上已經和CPU中央處理器並駕齊驅、甚至是超越的處理器的表現。而且繪圖晶片廠商為了加強3D視覺運算,現在GPU的電晶體數量與複雜程度大多遠超過處理器的設計,浮點運算的能力已經是CPU的數倍之多,怪不得業界常有人說:「處理器廠商最應該擔心的,不是對手推出更新的產品,而是繪圖晶片廠商跳去搶處理器市場。」這樣的話也許誇大一點,但卻代表GPU的運算能力,確實是電腦資訊界不容小覷的力量。


▲ 隨著3D繪圖晶片技術的演進,其浮點運算能力已經超越處理器甚多(1 GFLOP/s為每秒所能完成十億浮點運算數)。

GPU最主要的工作就是硬體層面的影像處理,特別是「3D視覺運算」部分,更是目前GPU主要負責的工作,像是3D遊戲或是Windows Vista酷炫的3D桌面,主要都是靠GPU運算而來得結果。不過當GPU近期演進到Unified Shader Architecture統一著色架構後,GPU內部設計則是充滿無數個執行單元所組成,每個單元都可以用來執行Vertex(頂點)、Geometry(幾何)或是Pixel(像素)等運算工作,可視運算情況作適合與彈性搭配,不像過去每個單元是有功能限制。這樣的架構就好像是目前正夯的多核心處理器一樣,利用多執行緒的平行運算概念,加快同一單位時間的運算速度,也彈性充分發揮每個執行單位的性能。


▲ CPU須兼顧運算的廣泛性,所以設計上和GPU不太一樣,GPU則是由數量眾多的執行單元所組成。

既然現在的GPU具備了比處理器更複雜的設計,加上統一著色架構的出現,GPU在浮點運算的平行運作處理上,已經超越目前處理器的好幾倍。那麼是不是有「將GPU取代CPU運算」的可行性呢?答案是「Yes!」,這種將GPU用在非傳統的3D圖形顯示方面的應用,一般資訊界通稱為「GPGPU」(General-purpose computing on graphics processing units)。這回筆者要介紹的,就是屬於GPGPU應用範疇的~Nvidia CUDA技術,徹底擺脫您對GPU的印象。

什麼是Nvidia CUDA?
Nvidia的CUDA是由Compute Unified Device Architecture四個字的縮寫而來,是Nvidia在2007年就發表的GPGPU應用程式開發技術,程式設計師可以利用C語言結合CUDA的指定延伸語法撰寫程式,透過NVCC編譯器編譯後,就可以將運算工作交由GPU來進行處理。


▲ Nvidia的CUDA運作流程架構。

CUDA聽起來很神奇對不對?在Nvidia口中沾沾自喜、最喜歡拿來提的成功案例,就是FASTRA。
在比利時的安特衛普大學(University of Antwerp)有個稱為ASTRA的醫學影像掃描學術研究單位,專門處理1024×1024×1024解析度的3D醫學影像。他們利用個人電腦配備、並搭配四張Nvidia GeForce9800GX2的Quad SLI系統,透過CUDA技術運算後,竟然發現這個系統在3D醫學圖形運算效能,竟然比300顆Intel Core 2 Duo 2.4GHz處理器的總和還要快,甚至和該學校內的一套CalcUA超級電腦的運算效能不相上下(這套超級電腦由256個節點的Sun Fire V20z所組成,每個節點搭載了雙顆AMD Opteron 250 2.4GHz處理器,加起來共有512個處理器核心之多…)。
CUDA技術不但帶給他們更大的效能,而且經濟上的效益更是顯著(不管是設備價格或省電上),於是他們將這台以小博大的”個人電腦”稱之為「FASTRA~GPU SuperPC」,還因此架設FASTRA專屬網站,提供相關配備資料與測試數據供大家參考。(FASTRA專屬網站:http://fastra.ua.ac.be/en/index.html)


▲ 這就是以小博大的FASTRA SuperPC平台。(圖片取自FASTRA專屬網站)


▲ FASTRA的主要浮點運算核心,由四張Nvidia GeForce 9800 GX2的Quad SLI系統組成。(圖片取自FASTRA專屬網站)


▲ FASTRA的效能,甚至超越了由256個節點的Sun Fire V20z,所組成的CalcUA超級電腦。(圖片取自FASTRA專屬網站)

當然Nvidia CUDA不是要將GPU搶盡功勞,讓大家跟CPU說掰掰,而是CUDA是希望GPU在3D娛樂用途之餘,可以借助其強大的數學運算能力,發揮比中央處理器更優異的執行效率。畢竟CPU的架構設計可對應不同的運算方式,有些仍是GPU所不能及(Intel也曾跳出來說過GPU不可能取代CPU,畢竟有些工作還是需靠CPU運算)。
而且Nvidia也很清楚的表示,CUDA的優勢在於「平行運算(Parallel Compute)」的程式上,如果是執行傳統的循序運算程式,那麼CUDA發揮的效益就不大,何況不是每種應用程式都適合平行運算方式處理。所以Nvidia很希望程式開發人員能夠在相關程式應用上,可以朝平行運算的撰寫方式邁進,以發揮GPU的優勢。


▲ 這是Nvidia CUDA的C語言平行運算程式範例。

或許有人會想到,既然CUDA會將程式平行運算的部分劃給GPU來處理,那麼CPU不就都閒閒沒事幹?甚至買多核心處理器又有甚麼意思?事實上Nvidia確實也想到了這點,加上考量到處理器正朝向多核心架構發展,因此在最新的CUDA 2.0版本中,提出了「Many Core+Multi Core」的概念,讓平行運算不但充分利用GPU的效能,還可以分配到多核心處理器進行運算,來個”火力大全開”。


▲ Nvidia CUDA 2.0的概念,把多核心處理器的運算資源也一併納入,可說是榨乾每個處理核心的效能,另外2.0版也新增其它作業系統平台的支援。

Nvidia CUDA的應用範疇
由於透過Nvidia CUDA所開發的應用程式,可以從GPU中獲得優異的平行運算與浮點運算效能,因此至今全球有超過250個客戶與學術研究單位,都已採用CUDA來開發應用程式或進行研究,這其中包含了生命科學、醫療設備、生產力、資源探勘、財政經濟、製造業、通訊等領域上,詳細實際應用大家可以上Nvidia CUDA Zone的官方網站看看(http://www.nvidia.com/object/cuda_home.html)。


▲ CUDA的應用範疇,目前還是局限在需大量運算的科學研究應用、或是商業用途,因為這些平行運算利用CUDA,可以帶來最大效益。

不過該網站乍看之下,目前好像沒有比較屬於個人端的應用程式使用CUDA技術?這是由於GPGPU應用,在大量平行運算的系統上效果最為顯著,個人電腦應用方面還有待開發。事實上這些CUDA開發的軟體中,還是有個人電腦應用的部分的,目前已經有廠商開發出影像轉檔軟體,像是Adobe PhotoShop,就有人開發出CUDA版的外掛濾鏡特效程式;另外像是近年來3D遊戲所訴求的物理運算,像是Nvidia PhysX物理運算技術,說穿了都是透過CUDA所開發出來的。根據Nvidia表示,未來將會有更多商業或是個人應用程式會採用Nvidia CUDA技術開發。

如何取得Nvidia CUDA開發資源
Nvidia CUDA是一項完全免費的開放性技術,而且支援Windows、Linux、Mac各種平台,有興趣的程式設計師可以到Nvidia CUDA Zone的官方網站上下載免費的程式開發套件,該套件包含了驅動程式(177.83以後版本)、Toolkit工具包與SDK軟體開發套件三個部分,當然網站上還有眾多的技術文件供下載參考,而且也有專屬討論區可以交流。
如果你跟我一樣是個非自動奮發型的學生,需要有名師指導鞭策才行的話,那麼國外已經有40所大專院校有開Nvidia CUDA的教學課程(國內也有學校預計展開相關課程),而Nvidia官方也會不定時在世界各地舉辦教學研習營與演講等活動,有興趣的網友不妨前往參加研習。


▲ 這是Nvidia和NCHC國家高速網路與計算機中心,曾在國內所開的Nvidia CUDA大量平型運算處理程式設計訓練課程,為期三天的學習獲得許多研究生的好評。

體驗Nvidia CUDA的威力
緊接著就讓我們來嘗試一下Nvidia CUDA平行運算的威力吧!不過要體驗Nvidia CUDA,還是有一些使用上的條件。首先就是電腦要有支援CUDA技術的顯示卡,原則上只要是GeForce 8000系列以後的顯示卡都行,無論筆電或是IGP系列通通可以用,當然也包括了高階的Tesla與Quadro專業繪圖系列(理論上只要G80以後核心,採Unified Shader Architecture架構,CUDA通通有支援)。接下來是顯示卡驅動程式部分,需要V177.83版本以後,才能支援CUDA(目前已經有V177.92版本供下載)。


筆者測試CUDA採用是公版Nvidia GeForce 9800GTX+,為新55nm製程的G92b核心,和舊款GeForce 9800GTX相比之下,不但耗電更低,散熱表現也更好,而且頻率也高達「核心:738MHz / 記憶體:2200MHz」,其主要對手就是ATI的Radeon HD4850。目前市場價格約7000元左右,筆者的3DMark 06成績為10250分、3DMark Vantage則是P7771分,是中高階顯示卡的首選之一。

■ Folding@Home
Folding@Home是由美國史丹佛大學化學系Pande Group所主持的分散式電腦運算工程,也就是透過網路將世界每個角落的個人電腦聯合起來運算,類似SETI@Home尋找外星人計畫。Folding@Home計畫主要在研究蛋白質摺疊、錯誤、聚合所產生的相關疾病,像是阿茲海默症(老年癡呆)、牛海綿狀腦病(狂牛症)、癌症和囊胞性纖維症等,都是研究範疇,目前Folding@Home所結合的電腦,已經列為金氏世界紀錄成為目前最大的分散式電腦運算工程計畫。
Folding@Home最特別的地方就是它提供了很多種程式版本,除了筆者所使用的Nvidia CUDA版本外,還有ATI適用的GPU版、多核心CPU版、甚至還有PS3遊樂器版本,而且不同版本的顯示畫面還不太一樣。(當然畫面漂亮與否,不具備任何效能意義)


▲ 這是筆者的GeForce 9800GTX+ CUDA平台畫面,有顯著的Nvidia Logo和背景。


▲ 這是PS3的畫面,撇開運算效能不談,顯示畫面實在一整個酷炫到不行,還1080P的勒…

■ Badaboom
Badaboom是一套採用CUDA技術的影音轉檔軟體,可以將mpg、vob、avi、ts、m2ts、mpeg、mts、wmv等檔案格式,轉成H.264格式,並輸出在不同的影音播放器上觀賞,例如PS3、PSP、iPhone、iPod等。Badaboom的操作介面非常的直覺化,左側為轉檔來原視窗,中間為轉檔運作視窗(可即時預覽),右側為目標視窗(看你想轉成甚麼樣的檔),即使是英文介面也很容易上手。


▲ Badaboom算是第一套用CUDA開發的個人用影音轉檔軟體,不過轉檔速度上實測感覺還好。

■ Nurien
近期在Nvidia宣傳物理加速的記者會場合中,最受到國內外媒體歡迎的就是Nurien這套遊戲的Demo影片。Nurien是一套由韓國遊戲廠商開發的線上3D社群遊戲,採用Unreal 3引擎與Nvidia的PhysX物理運算技術,耗時三年製作,將今年8月底開始進行封測。
雖然此遊戲內容屬性比較偏向女性玩家,不過筆者還是建議擁有不錯的顯示卡玩家,應該弄一套來玩玩看(官方建議GeForce 9600GT以上),因為畫面裡的美女動作栩栩如生就算了,加上物理運算的加持,人物的服裝、毛髮的物理影反應動作,簡直就跟真實畫面沒什兩樣,而且每次物理即時運算的結果畫面都不太一樣(像是每次測試不見得都看的到小褲褲…),3D效果實在令人驚艷。筆者測試成績結果平均FPS:47.78張,算是及格吧。


▲ Demo內容是一段走秀,也可以當Benchmark測試顯示卡效能,率先登場的這位短裙美媚。


▲ 一開始就來一個「Got You!」,我承認我有被電到


▲ 上伸展台轉一圈,可以看到頭髮和裙子的物理運算非常真實。不過,小姐你是穿短裙耶~這樣轉被舞台下觀眾看到不好喔~


▲ 第二位出場的是長裙美媚,不過雖然是穿長裙,但這裙子也未免太飄逸了吧~(我換個位置到舞台前方好了…)。


▲ 這….Oh~Ya~!


▲ 長裙的動作更大,更可以看到運理運算帶來遊戲情境的真實性(扭下去、搖下去~)。


▲ 什…?沒啦?後面那兩位,不用上場來搖一下嗎?

■ Warmonger
Warmonger也是一套採用Unreal 3引擎與Nvidia PhysX物理運算技術的第一人稱射擊遊戲,也因為結合物理運算的關係,讓遊戲時的體驗更加真實,這也是未來3D遊戲設計中努力邁進的目標,也是遊戲在追求流暢之餘,玩家既真實、又臨場的感受是非常重要的。


▲ 這是練習模式一開始的場景,滿天飛舞的火花與紙屑,都是用物理運算模擬出來的。


▲ 打個幾槍牆壁就會損壞,落下碎塊,其掉落方式,就是物理運算的成果。


▲ 隨風飄逸的帆布,開槍一樣有布質特性的物理反應,還可以依序打破它。不過好像很多遊戲都喜歡用布類,來呈現物理運算效果。


▲ 也可以把建築牆壁上的女兒牆打掉,雖然碎片沒砸到我,可是到底是誰偷偷在對我開槍啊?


▲ 可惡!給我打暗槍還躲起來?X的~轟你一槍看你躲哪裡,哈哈。


▲ 打毀磚牆,也可以看到磚塊零星掉落的不同物理運算效果(這把槍怎這麼猛?國軍應該也來一把)。

■ GRAW2
GRAW2是虛擬戰爭小說家湯姆克蘭西的最新改編遊戲作品,國內遊戲翻成「火線獵殺~先進戰士2」,但不管怎麼翻譯,原則上它依然是一款第一人稱射擊遊戲,不過加入Nvidia PhysX物理運算技術後,3D遊戲畫面的真實感又邁進一步了。以下是幾張GRAW2應用物理運算的爆破場景。


▲ 這是爆炸還是國慶煙火秀?效果非常炫麗。


▲ 房屋木片瞬間爆射開來,還好我閃得夠遠,可以看好戲。


▲ 瞭望台的倒塌畫面,同樣是木頭,可是物理效果的反應不太一樣。


▲ 最後再來個瞬間大爆射,連周圍的植物都可以感受到爆炸的威力,這把槍果然更猛。

■ Unreal Tournament 3
UT3小弟就不用介紹太多了吧!國內翻譯成「浴血戰場3」,是很多3D顯示卡測試的指標。該遊戲後來也推出了物理運算版,有物理運算的加持,場景的真實感果然加分不少。不過看過了一堆爆炸場面後,接下來我們來看點不一樣的3D物理運算畫面。


▲ 先來一段Die Hard式玻璃掃射,有說不出的無比暢快啊~


▲ 疑?發生什麼事,那邊的鐵皮屋頂,怎被掀起來了?


▲ 阿娘喂!竟然有龍捲風,Oh My God~ Oh My God...,我不要被捲走啊!(柯洛佛式口吻)


▲ 當然這龍捲風特效也是物理運算的結果,CUDA技術的應用果然隨處可見。

這會是一場CPU與GPU的戰爭嗎?
Nvidia CUDA的出現,證明了即使一般常見的家用3D繪圖卡,運用在平行運算上可是連中央處理器都會汗顏的,也證明了3D繪圖卡不僅止於拿來打打Game的娛樂用途,在學術研究與科學應用上,更有其立足的地位。
雖然GPU無法全面取代CPU的地位,可是Nvidia CUDA的出現,確實在大量平行運算的市場上掀起一場CPU與GPU的戰爭,為什麼這樣說呢?因為既然GPU在平行運算的應用上,效能遠超過CPU的能耐,那麼原先用CPU作為平行運算應用的研究單位或是公司行號,可能就會轉向購買類似GPGPU的相關產品,像是Nvidia Tesla或是AMD Stream Processor等,而不是購買或升級高階的中央處理器來應付更龐大的運算,相對的在高階應用的CPU市場就會被GPU侵蝕。
不過GPGPU的應用,在個人桌上型電腦才剛剛起步,目前最容易看到的,大概就是3D遊戲中的物理運算特效了。不過隨著Nvidia CUDA的發展,小弟樂見應用程式的廣泛支援,搞不好未來有哪一天,當有人問我們電腦影像處理或影音轉碼效率太慢時,可能就不能回答他因為你的處理器不夠力,而是該換張3D繪圖卡的時候了。

» 分享到