硬體加速搞不懂?CUDA讓一切變得更簡單

 

 

 自從NVIDIA推出CUDA核心運算技術之後,不但對遊戲、文書處理或是影音轉檔都幫助甚大,今日的GPU在浮點運算效能上早已超越CPU,不但現在的電腦應用中CPU與GPU是共同存在的,連原本是需要CPU來運算

的資料現在都可以藉由GPU來執行,而且還做得更好!以NVIDIA所推出的CUDA技術來說,源起於GPGPU的運算技術經過改良之後正式命名為CUDA,但是有多數玩家並不了解何謂CUDA?今日NVIDIA的繪圖核心已經全面導入CUDA的技術,在軟體方面,廠商們支援CUDA的意願度也越來越高,從Adobe、Google和多家遊戲公司的支持可以看到,將來的CUDA會在我們的生活應用上扮演著相當重要的角色,本期就要告訴各位讀者CUDA技術如何運用在我們的電腦生活上!

 
 
■      GPU概念的起源
 
 繪圖處理器英文為Graphic Processing Unit,簡稱就是各位讀者們所熟悉的GPU。打從GPU問世以來對我們的生活有頗大的幫助,但大部分的人還是比較熟悉中央處理器CPU,對於GPU似乎了解不多,但我們換個方式來介紹,GPU就是顯示卡中的微處理器,當然不只是用在顯示卡上,在主機板上或是遊戲機中等等,只要有撥放多媒體的需求都有GPU的身影,這樣解說各位也許就容易明白,不過GPU這詞兒是怎麼來的呢?相信讀者們肯定聽過NVIDIA,是現今最大的繪圖處理器製造商之一,全球有難以計算的個人電腦、工作站、遊戲機甚至智慧型手持裝置都使用NVIDIA所提供的繪圖處器,然而NVIDIA在1999年發表GeForce 256的時候一併提出多媒體處理概念GPGPU(General-Purpose Computing on Graphics Processing Units)。
 
/ NVIDIA在發表GeForce 256架構的同時也提出GPGPU的運算架構
 
 
 
不過在GPGPU概念推出前,x86架構的處理器就一直擔負著多媒體處理的重要角色,在Intel推出Intel 8086處理器時問世,多年來有許多廠商嘗試著推出x86架構的處理器,但是看到現今市場上只見到Intel和AMD,就知道這並不是一件簡單的事情,事隔多年,直到現在x86架構還是全球最多的平台,不過這後面卻隱藏一些技術上的難題。x86處理器中的CISC架構(Complex Instruction Set Computer – 複雜指令集)實際上因為暫存器數量有限,所以並不擅長多媒體運算,雖然如此還是得不斷改善CISC架構以及SIMD運算的能力,進而發展出多媒體加速指令集MMX來加速多媒體運算的能力。
 
/ Intel 8086微處理器在GPU推出以前擔起多媒體運算的重要任務
 
 
 
 多媒體加速指令集的出現的確改善了x86處理器先天的缺陷,然而跟著使用環境的需求,很快的就發現這樣還是不夠!x86處理器多媒體指令集的發展已經開始以SSE(Streaming SIMD Extensions)指令集為標準,SSE後續的版本為SSE2、SSE3和SSE4,這些指令集的發展主要的重點不外乎就是強化多媒體的運算能力,例如圖形、影片編碼或是遊戲方面的運算,各位可以回想看看個人電腦從什麼時候開始強調遊戲或影像編碼效能,如果沒錯的話差不多應該是從Pentium 3~Pentium 4的年代吧,使用者慢慢仰賴電腦來處理影音、圖像處裡以及遊戲等等的多媒體運用,但這樣還是有問題,因為多媒體運算大多需要擁有非常強大的浮點運算以及平行運算,如果要達到非常高效率的輸出,就必須要有數量非常之多的CPU來進行所謂的平行運算,不過這並不容易,先撇開開發的難度不說,光是這麼多的CPU串接在一起的體積會相當龐大,更不用說那非常驚人的功耗了,但是這也沒辦法,x86架構先天就是如此。
 
/ SSE是x86多媒體運算中最為主要的指令集
 
 
 
所以自從NVIDIA提出GPU概念之後,就將顯示多媒體運算從中央處理器中分離,獨立出來成為顯示核心,主要工作就是分擔CPU在多媒體影像方面的運算,相對也會大幅降低CPU的負擔,因為目前市面上消費級的處理器也只是六核心,特別是Intel的處理器擁有超執行緒技術,可以讓1個實體核心模擬出兩個執行緒,像是消費型旗艦款六核心Core i7 980-X就有6個實體核心及12個執行緒,能以相當高速來處理純量運算,但是多媒體運算需要的並不是純量運算,而是向量運算,不過向量運算要快,就得藉由龐大的平行運算能力!目前GPU的核心架構設計採用單元串流的方式(Stream Processors),內建的處理單元少說也有數十個,多則高達到數百個,這些數量眾多的處理單元用來平行運算再好不過了,尤其是運算3D圖形時更是能突顯出GPU的效能優異,單以浮點運算的效能來看CPU約在50~100GFLOPS左右,對一般使用純量運算上已經夠快了,不過GPU的浮點運算卻早已達1,000GFLOPS以上,經過這幾年的進化之後,用於超級電腦上的GPU在浮點運算能力上達到了兆級的水準,可想而知這是多麼龐大的平行運算架構!簡單來說CPU可以輕鬆的記下非常大量且複雜的指令,但是處理時會有先後順序的問題,每條指令必須一一運算,就算是大量且簡單或是重複的資料呢?沒意外的話結果還是一樣,CPU是非常遵守運算的順序,雖然快速但還是得要從頭運算一遍。
 
/ Tesla系列是NVIDIA用於工作站級的CUDA處理器,其浮點運算能力是消費級產品的數倍之多。
 
 
 
 
/ 透過數張的Tesla就能組成超級電腦所使用的運算核心,其運算效能更是驚人。
 
 
 
 還是不明白平行運算的原理嗎?小編在此舉個簡單的例子解說一下什麼是平行運算,不知道各位讀者有沒有點過速食的外送服務,現在有很多速食店都有外送服務,當然有會有許多人喜愛這樣的服務,因為太方便了,不過會發現到不論哪家速食店的外送服務都採用機車來外送,並不會用貨車,雖然貨車可以載的數量多,就算是需要載運100份或送往100個地方也沒問題,但是運送時就必須一家家的跑,但只要越多人點餐就會增加運送地點,如此也會有效率上的問題!如果所有車輛都外出之後還有人點餐,餐車就必須送完一圈之後再回到起點接收新的任務,這就是CPU運算資料的模式,當然為了提升效率,可以添增車輛(增加核心數量)或是將快取容量加大(可以放更多份餐),甚至提高運作時脈(提高運送速度),這樣還是可以改善效率,但這樣總是會有上限的問題!而GPU的平行運算模式就如同機車外送,需要送達幾個地點就會派出幾台機車,每個處裡單元就會以最快速的方式將資料送達每個地點,如果GPU核心有100個處理單元就能同時運算100筆資料,重點就是效率的問題,總不會是希望送到家的餐點是已經冷掉了!
 
/ 從圖中可以明顯看到CPU與GPU之間的架構差異,一般主流CPU產品內建為4個核心,
但是主流的GPU產品卻內建上百個處理單元,比起CPU,GPU更適合用來大量的平行運算。
 
 
 
 
█      CUDA的崛起
 
 說到平行運算效能不得順便提一下目前全球排名第一、三、四名的超級電腦都使用NVIDIA的GPU,相信很多人一定覺得這很奇妙,為什麼超級電腦不是使用CPU來運算而是GPU?其實就是前面所提到的處理單元的數量和平行運算效能上的差異,另一方面就是記憶體的不同,我們都知道CPU因為要提升純量運算的效能需要更低延遲的記憶體,而目前記憶體的時脈以Intel的X58晶片組主機板所支援的三通到來說基本就有DDR3-1333,理論頻寬約有35~40GB/s左右,但記憶體本身的位元寬卻只有64bit,反觀繪圖核心所使用的記憶體位元寬起碼都有128bit,主流產品大多都是256bit,高階規格的繪圖卡的記憶體位元寬都甚至達到512bit,可見CPU與GPU相較之下的頻寬速度或位元寬都難以相提並論!
 
/ 全球最強悍的超級電腦「天河一號」,搭載7168張的Fermi架構的Tesla M2050。
 
 
 
 看到這裡讀者們是否開始感覺到,我們一直以來所使用的顯示卡核心原來這麼了不起!如果以向量運算來看的確是這樣,加上平行運算、浮點運算等各方面GPU確實有相當高的運算能力,不過GPU概念一開始並沒有發展的很順利,因為這是一個全新的架構,雖然可以解決多媒體加速運算的問題,但是光有架構是沒辦執行指令,必須要有能夠與GPU溝通的語言,所以NVIDIA在2006~2007之間發表了一項全新的運算架構並稱為CUDA(Compute Unified Device Architecture)。這也是NVIDIA正式給GPGPU的名稱,簡單來說是一種用在GPU複雜平行運算時的指令集,類似中央處理器x86架構的指令集,這也是自GPU概念推出之後首次可以讓程式設計師使用C語言運用GPU那蘊藏已久的強大運算能力,所以NVIDIA從GeForce 8系列之後的顯示卡開始支援CUDA技術。
 
/ NVIDIA在推出8系列顯示卡時開始支援CUDA運算技術,大幅減少CPU的運作負擔。
 
 
 
 
█      強大的向量運算在今日的現實生活上被廣泛運用
 
 前面說那麼多的指令集、GPU技術和CUDA技術,那麼到底CUDA能為我們做些什麼事情呢?或是在我們的生活上的電腦應用扮演著什麼角色?先不討論CUDA在我們認知的電腦應用上有多麼活躍,別以為NVIDIA CUDA顯示卡就只能玩遊戲!因為CUDA技術在伺服器上的應用遠遠超過我們能想像的範圍,在各種科學、工業或商業運用都受到肯定,只要任何你想得到的作業環境幾乎都有CUDA的存在,舉例來說像是電影工業、學術研究、醫療領域、氣象模擬和圖形開發等等,都需要使用大量GPU的CUDA技術來運算,就以電影舉例來說,先前轟動全球的3D電影阿凡達前後兩個多小時的撥放時間,卻帶給人們相當震撼及壯觀的視覺感受,但是這幕後的製作有多麼的艱難相信很少人能知道。阿凡達電影中的場景有相當多的部分無法透過拍攝實景來呈現,甚至其中也有數百個人物是虛擬出來的,這些無法從無到有的物件都必須由圖形開發的設計師來製作,但製作需要時間,對於拍攝電影來說時間就是金錢,所以提升運算速度是必然的!
 
 只要有看過阿凡達的人應該都被那壯觀的潘多拉星球給吸引了,不過幾乎都是經由CUDA運算過後的背景,實際拍攝時演員只需要在棚內特製的佈景前擺出動作,然後再和CUDA運算好的虛擬場景結合後,就成為我們在螢光幕前所看到的一切,像是身高達3公尺的那美人當然不是靠演員化妝來呈現,而是圖形設計師預先使用3D繪圖軟體製作影片中的那美人,然後在攝影棚內的演員全身會戴上數個感應器,透過演員做出任何動作,感應器會將動作訊號的參數傳送到電腦中的模型,3D的那美人圖形即可呈現同步動作。
 
 
 
 
 

 

/ 當你看到阿凡達的製作方式,你就會了解到現今的GPU效能可以讓
演員連化妝都不需要,就能呈現逼真的畫面!
(圖片來源:Discovery
 
 
 
 有了動作之後還需要加上「渲染」,所謂的渲染就是將基礎圖形貼上材質貼圖,讓潘多拉星上的那美人模型物件呈現逼真的皮膚,最後當然不能缺少現實世界中最重要的「光影」,各位讀者是否還記得本刊在上一期有解說過「光線追蹤技術」,透過這項技術能夠模擬出真實的光源反射,讓所有虛擬的物件、人物、背景都能夠像是活生生的在潘多拉星球上一樣,逼真的程度讓你在觀賞時也無法分辨真假!結合上面所有的特效處裡,我們就能得知一個完整的畫面中需要有基本圖形、渲染紋理和光影效果。
 

 以上所說的電影特效製作過程重點在於突顯GPU的重要性,我們所看到的一切都必須要藉由強大的CUDA技術來做平行運算,透過大量的GPU核心運算來輸入和輸出3D材質與畫面的像素,和CPU所擅長的純量運算特性是完全不一樣的,當然,這也不是一般的電腦就可以獨力完成,因為這樣如此龐大的平行運算,需要數量相當多的GPU串在一起做平行運算。以上的解說是要強調CUDA GPU在電影工業上的特效運算擁有強大的效能表現。

 

 

資料來源:NVIDIA

 

 

資料來源:NVIDIA

 

 

 

 

 

 

 NVIDIA CUDA的問世,對於大部分的玩家來說還是相當陌生,也許你只聽過CUDA,但是卻不知道它能帶來哪些好處,這次小編所介紹的CUDA只是皮毛而已,是整個CUDA架構的冰山一角。其實GPU效能在生活上的電腦應用相當重要,顯示卡除了用來顯示畫面之外,圖形運算也是顯示卡的主要工作,基於開發遊戲的繪圖引擎等級越來越高,圖形物件的複雜度比起以前提升了不少,再者,為了追求擬真場景,遊戲中加入了相當多的光影特效,這些都已經遠遠超越了內顯所能運算的範圍了,不單只是遊戲能看出顯示卡的重要性之外,現今最多人使用的美工繪圖軟體Adobe CS系列,在顯示卡的幫助下明顯提升繪圖效率,尤其是CS4之後的版本支援NVIDIA的CUDA技術,處理速度更是大幅提升,近年來影音轉檔更是能藉由顯示卡的運算技術提升速度,而CUDA可以快速高畫質轉檔、破解密碼或是將拍壞的影片變清晰、把DVD變高清藍光畫質影片,還可以透過影音軟體CyberLink PowerDVD 10讓您的2D影片變立體3D,透過NVIDIA 3D VISION LIVE的網站,玩家們可以上傳自己所拍攝的3D照片與影片,讓遠方的親朋好友也都能欣賞,所以NVIDIA的CUDA技術處理速度不只是提升平台的整體效能,在我們的生活上電腦應用可說是徹底發揮CUDA GPU的附加價值。

 

 

█      你所不了解的CUDA技術,一直在我們的生活應用中
 
別以為CUDA運算技術只能運用在開發或是工程運算,事實上從我們平常的生活中就已經融入CUDA的運用了,只是各位不知道而已,舉例來說,電腦普及的現在,家用遊戲機已經不是遊戲玩家的唯一選擇,電腦遊戲所能發揮的空間比家用主機還大上許多,近年來電腦遊戲慢慢注重畫面的呈現以及臨場感,以前在還沒有CUDA GPU的時候,遊戲中會盡量避免有大量的動態物件或是物理運算,就如同小編先前所提到的,這並不是CPU所擅長的工作,只要有動態的物件需要運算就只會大量增加CPU的負擔,不過當CUDA技術應用在遊戲上的時候,就可以接手所有的物理運算,其中像是動態水、煙霧塵埃、爆破碎片,甚至像是衣服布料、頭髮等等的物理特效,尤其是布料和頭髮是遊戲中最難表現的部分,到現在為止大部分的遊戲都還沒辦法將頭髮逼真的呈現出來,有絕大部分都還是以塊狀來大略呈現,這也是因為要符合大眾玩家的硬體環境需求,當然比較高階的遊戲也慢慢將細節表現出來,畢竟現在的GPU的運算能力都比多年前來得好。
 
圖 / 經由CUDA的密集平行運算之後,可以將模擬出最難呈現的動態水。
 
 
 
不知道各位是否還記得在三年前有款遊戲名稱為「末日之戰」?這款遊戲的推出瞬間被掛上硬體殺手的封號,雖然在網路上被熱烈討論,但其實有玩的玩家並不多,這是因為這款遊戲使用非常大量的物理特效,前所未有的爆破特效以及大量可破壞的物件、使用大面積的物理動態水等等,多種動態特效來呈現逼真的臨場感,但是當時顯示卡效能還無法完全對應到,沒有中高階以上的特效都開不到一半,小編曾經使用NVIDIA當年的旗艦產品8800GTX來運行,無奈卻還是無法開啟最大特效,但由於NVIDIA在8系列已經開始支援CUDA技術,運用平行運算的優勢來處理物理特效,所以和其他品牌的顯示卡相較之下還是順暢許多!
 
 以上是CUDA在遊戲方面的運用,但這只是一小部分而已,除了遊戲之外還有像是影片轉檔加速、提升影片畫質、修復拍壞的影片、加速YouTube影片播放、Adobe繪圖軟體硬體加速、FlashPlayer網頁加速等等,相當多的運用都是我們生活上能夠直接感受到,尤其是轉檔更是現在最常使用的多媒體應用,小編我自己也常使用智慧型手機錄上一段高畫質影片,之後上傳到網路上與大家分享,但是如果檔案過大就無法快速上傳到網路上,所以會需要轉檔將影片壓縮!只要使用支援CUDA的轉檔軟體,就可以發揮CUDA大量串流處理器的優勢,進行硬體編碼加速與硬體解碼加速的功能,當然現在支援CUDA轉檔加速的軟體越來越多,大家最熟悉的應該就是訊連科技所推出的產品較多,像是「威力導演」、「威力製片」、「魅力四射5」等多套影音編輯軟體,都有支援NVIDIA的CUDA GPU加速功能,除了以上這些之外,市面上還有許多影音編輯軟體都陸續有支援CUDA硬體加速功能,NVIDIA官方網站上也可以找到支援CUDA轉檔的「BADABOOM」,這也是一套不錯用的影片轉檔軟體,透過CUDA技術在轉檔速度上提升許多,善加利用這些有支援CUDA的軟體,相信可以提升許多編輯多媒體的時間!
 
圖 / 訊連科技推出的影音編輯相關軟體大部分都有支援NVIDIA CUDA硬體加速功能
 
 
 
Quick Sync Video,且必須要搭配H67主機板和有支援的軟體才能運用Quick Sync的效果,因為本測試是針對NVIDIA CUDA開啟前後的差異性來做比較,所以不另外測試 以上的測試成績是使用CyberLink Media Espresso將25分鐘的1080i的MPEG-2影片轉成720p的MPEG-4,顯卡採用NVIDIA GTX560 Ti,轉檔時開啟NVIDIA CUDA硬體加速技術,所得到的結果還算不錯,不過有一點要先說明一下,因為一般的處理器並沒有像Sandy Bridge有支援Intel Sandy Bridge所支援的Quick Sync Video技術。
從測試成績來看,轉檔的過程中有沒有開啟CUDA影響的確頗大,開啟CUDA之後轉檔的速度快了50%以上。另一方面要提醒一下各位讀者,轉檔的速度快或慢不能單單只是以硬體來決勝負,挑對軟體使用也是很重要的唷!
 
 
█      上網CUDA不缺席,日後應用無限可能
 
 也許玩家們不常需要轉檔,所以比較沒辦法感受CUDA所帶來的效益,但是總是會上網吧!現在的電腦使用者每天使用電腦的時間內,瀏覽網頁的時間應該是最多的,不過也許你不知道今年開始,許多瀏覽器已經開始支援最新的FlashPlayer和HTML5,而各家瀏覽器供應商也開始釋出相對應的瀏覽器版本,以微軟來說就是Internet Explorer 9或是估狗大神的Google Chrome、Opera Mobile、蘋果自家的Safari和許多人愛用的Firefox等各位所熟悉的瀏覽器,都將完整支援最新的HTML5語法,連大家每天都會瀏覽的YouTube都已經支援HTML5,然而制定網頁標準的協會W3C(World Wide Web Consortium)也會在今年訂出標準。在HTML5的網頁設計標準中相較於以前增加了section, video, progress, nav, meter, time, aside等數十種元素,設計網頁時可運用這些元素做出各種效果,網頁設計師可以輕鬆繪製2D或3D圖形,然後再以動畫方式呈現,當然最重要的一點是可以直接在瀏覽器上撥放影片。
 
其實現在的網頁都已經使用大量的Flash、2D和3D圖形以及影片,比起以前,現在電腦更需要多媒體的運算速度,就舉例Flash來說,這是屬於多媒體運用的一種,並且支援用H.264標準製作的HD Flash影片,較特別的是Flash Player有支援NVIDIA的CUDA平行運算技術,連同上段所說的新一代瀏覽器語法HTML5也都會支援CUDA的硬體加速功能,這就是意謂著只要使用支援CUDA的NVIDIA顯示卡,就會自動啟用硬體加速功能,不論是瀏覽網頁或是播放Flash影片速度都會比一般平台還要快!
 
圖 / 下一代最新的瀏覽器支援HTML5語法,讓網頁能添加更多的多媒體特效,
透過CUDA的支援能見少CPU的負擔,加速播放並提升平台效能。
 
 
 
 
█      善加運用CUDA,讓一切變得更簡單

 

NVIDIA CUDA的問世,對於大部分的玩家來說還是相當陌生,也許你只聽過CUDA,但是卻不知道它能帶來哪些好處,這次小編所介紹的CUDA只是皮毛而已,是整個CUDA架構的冰山一角。其實GPU效能在生活上的電腦應用相當重要,顯示卡除了用來顯示畫面之外,圖形運算也是顯示卡的主要工作,基於開發遊戲的繪圖引擎等級越來越高,圖形物件的複雜度比起以前提升了不少,再者,為了追求擬真場景,遊戲中加入了相當多的光影特效,這些都已經遠遠超越了內顯所能運算的範圍了,不單只是遊戲能看出顯示卡的重要性之外,現今最多人使用的美工繪圖軟體Adobe CS系列,在顯示卡的幫助下明顯提升繪圖效率,尤其是CS4之後的版本支援NVIDIA的CUDA技術,處理速度更是大幅提升,近年來影音轉檔更是能藉由顯示卡的運算技術提升速度,而CUDA可以快速高畫質轉檔、破解密碼或是將拍壞的影片變清晰、把DVD變高清藍光畫質影片,還可以透過影音軟體CyberLink PowerDVD 10讓您的2D影片變立體3D,透過NVIDIA 3D VISION LIVE的網站,玩家們可以上傳自己所拍攝的3D照片與影片,讓遠方的親朋好友也都能欣賞,所以NVIDIA的CUDA技術處理速度不只是提升平台的整體效能,在我們的生活上電腦應用可說是徹底發揮CUDA GPU的附加價值。

 

 

 

 

臉書留言