GPU、CPU:不止一字之差那么簡(jiǎn)單
1. 引言
自1999年NVIDIA提出GPU的概念以來(lái),GPU的高浮點(diǎn)運(yùn)算能力引發(fā)了不少的話題,比如GPU將取代CPU?;贕PU的特殊性,研究人員正在從事相關(guān)方面的研究,以期充分地利用GPU高運(yùn)算速度。
隨著計(jì)算機(jī)圖形處理硬件的又一次升級(jí),即計(jì)算機(jī)圖形處理器的升級(jí)。圖形處理器的應(yīng)用已成為熱門(mén)的課題。
2. GPU的功能
GPU(Graphic ProcessingUnit)即圖形處理器。1999年NVIDIA公司發(fā)布GeForce 256圖形處理芯片時(shí),首先提出GPU的概念。一塊標(biāo)準(zhǔn)的GPU主要包括2D單元、3D單元、視頻處理單元、FSAA(Full Scene Anti—aliasing,全景抗鋸齒)單元和顯存管理單元等。
它設(shè)計(jì)的宗旨是實(shí)現(xiàn)圖形加速,現(xiàn)在最主要的是實(shí)現(xiàn)3D圖形加速,因此它的設(shè)計(jì)基本上是為3D圖形加速的相關(guān)運(yùn)算來(lái)優(yōu)化的,如消隱、紋理映射、圖形的坐標(biāo)位置變換與光照計(jì)算等等。這幾年GPU發(fā)展迅猛,2007年NVIDIA甚至提出“重GPU核心,輕CPU頻率”的論調(diào)。這是否意味著GPU時(shí)代的到來(lái)?
3. GPU與CPU的比較
GPU以其高速的浮點(diǎn)運(yùn)算能力迅速地吸引了人們的眼球。
其計(jì)算能力到底有多大?CPU的浮點(diǎn)運(yùn)算能力一般在10 Gflops以下(每秒可進(jìn)行10億次浮點(diǎn)運(yùn)算),而GeForce6系列的浮點(diǎn)運(yùn)算能力已經(jīng)在40 Gflops左右,GeForce7950GX2更是達(dá)到了384Gflops;在向量計(jì)算方面能夠獲得比CPU高出十倍的計(jì)算效率。
這得益于它是對(duì)圖形處理量身定制。GPU并行計(jì)算的能力更是強(qiáng)大,它內(nèi)部具有快速存儲(chǔ)系統(tǒng),NVIDIA的8800有128個(gè)處理器,此外,GPU的硬件設(shè)計(jì)能夠管理數(shù)千個(gè)并行線程,這數(shù)千個(gè)線程全部由GPU創(chuàng)建和管理而不需要開(kāi)發(fā)人員進(jìn)行任何編程與管理。然而,現(xiàn)在GPU還是協(xié)助CPU進(jìn)行圖形處理,著實(shí)浪費(fèi)不少其運(yùn)算能力。
值得注意的是,如此強(qiáng)大的計(jì)算能力具有針對(duì)性———圖形計(jì)算,如Z- buffering、紋理映射與光照計(jì)算等。這類計(jì)算都是針對(duì)大量的平行數(shù)據(jù),運(yùn)算的數(shù)據(jù)量大,但是運(yùn)算的類型卻并不復(fù)雜,還具有類似性,計(jì)算性強(qiáng)但是邏輯性不強(qiáng),如矩陣運(yùn)算就是圖形運(yùn)算的典型特征。而CPU是設(shè)計(jì)用來(lái)處理通用任務(wù)的處理、加工、運(yùn)算以及系統(tǒng)核心控制等工作,CPU的微架構(gòu)是為高效率處理數(shù)據(jù)相關(guān)性不大的計(jì)算類、復(fù)雜繁瑣的非計(jì)算類等工作而優(yōu)化的。所以現(xiàn)在CPU和GPU還在自己的軌道上各司其職。
GPU特殊的硬件架構(gòu)突出了對(duì)CPU的優(yōu)勢(shì):擁有高帶寬的獨(dú)立顯存;浮點(diǎn)運(yùn)算性能高;幾何處理能力強(qiáng);適合處理并行計(jì)算任務(wù);適合進(jìn)行重復(fù)計(jì)算;適合圖像或視頻處理任務(wù);能夠大幅度降低系統(tǒng)成本。[!--empirenews.page--]
4. GPU的現(xiàn)狀
GPU引發(fā)了計(jì)算機(jī)可視化的革命。處理器巨頭Intel感受到GPU帶來(lái)的強(qiáng)大的沖擊力,Intel專門(mén)開(kāi)發(fā)了一套面向可編程的顯示計(jì)算通用架構(gòu)芯片的全新架構(gòu)———Larrabee架構(gòu)。它能帶來(lái)的效果可從英特爾公司高級(jí)副總裁兼數(shù)字企業(yè)事業(yè)部總經(jīng)理———帕特·基辛格在IDF峰會(huì)上的講話得出答案。
“可編程的顯示計(jì)算通用架構(gòu)芯片是一場(chǎng)革命,它將顛覆持續(xù)了幾十年的顯卡產(chǎn)業(yè),可編程的顯示計(jì)算通用架構(gòu)芯片雖然不會(huì)馬上替代顯卡,但是在三四年之后,隨著我們相關(guān)技術(shù)、產(chǎn)品的成熟上市,顯卡產(chǎn)業(yè)將消亡。”
按照英特爾的觀點(diǎn),隨著可編程的顯示計(jì)算通用架構(gòu)芯片的成熟,它將逐步取代GPU的地位,顯卡則會(huì)慢慢被集成取代,作為獨(dú)立硬件生存的空間會(huì)越來(lái)越小。
GPU如果只是作為顯卡就太浪費(fèi)了,因此NVIDIA推出CUDA(Compute Unified Device Architecture統(tǒng)一計(jì)算設(shè)備架構(gòu)),讓顯卡可以用于圖像計(jì)算以外的目的。并對(duì)GPU的功能進(jìn)行了重新的定義,CUDA是一個(gè)革命性的計(jì)算架構(gòu)和計(jì)算思路,能夠讓GPU在消費(fèi)、商務(wù)、技術(shù)等應(yīng)用方面大展拳腳,解決復(fù)雜的計(jì)算問(wèn)題。CUDA能夠更有效地使用性能日益提升的GPU性能,有效地利用GPU的高速運(yùn)算能力,配合CPU進(jìn)行高性能通用計(jì)算。
GPU和高并行處理器都在同時(shí)間賽跑,快速的向前發(fā)展以搶占未來(lái)的市場(chǎng),未來(lái)處理器的速度會(huì)在這次競(jìng)爭(zhēng)中發(fā)展到什么地步值得我們期待。
5. GPU的應(yīng)用
GPU應(yīng)用的研究圍繞著高浮點(diǎn)運(yùn)算能力,可編程性和平行運(yùn)算進(jìn)行。到目前為止,GPU和CUDA的配合,主要應(yīng)用于商業(yè)高端運(yùn)算或者超級(jí)運(yùn)算。如tesla高性能計(jì)算,GPU加速M(fèi)atlab高性能計(jì)算,醫(yī)療圖像的生成等。
由于GPU的匯編指令比較復(fù)雜,而且對(duì)于各種版本的硬件的支持存在不統(tǒng)一的問(wèn)題,一些高級(jí)語(yǔ)言(例如GLSL、HLSL)已經(jīng)被一些大廠商開(kāi)發(fā)出來(lái),加快了對(duì)GPU編程的應(yīng)用研究。從系統(tǒng)架構(gòu)上看,GPU是針對(duì)向量計(jì)算進(jìn)行了優(yōu)化的高度并行的數(shù)據(jù)流處理器,其中包括兩種流處理單元:多指令多數(shù)據(jù)流(MIMD)的處理單元———頂點(diǎn)處理流水線(Vertex Shader),單指令多數(shù)據(jù)流(SIMD)的處理單元———像素處理流水線。這種以數(shù)據(jù)流作為處理單元的處理器,在對(duì)數(shù)據(jù)流的處理上可以獲取較高的效率,因此很多研究人員從事一個(gè)新的研究領(lǐng)域:基于GPU 的通用計(jì)算(GPGPU:General- Purpose Computation onGraphics Processors),其主要研究?jī)?nèi)容除了圖形處理以外,考慮更為廣泛的應(yīng)用計(jì)算。GPU最初的設(shè)計(jì)思想給這個(gè)新的領(lǐng)域帶來(lái)了問(wèn)題。GPU是專門(mén)為圖形處理設(shè)計(jì)的處理器,它具有自己的存儲(chǔ)單元,在數(shù)據(jù)存取方式上存在一定的特殊性,而且通常對(duì)GPU進(jìn)行開(kāi)發(fā)的是一些游戲廠商,使用非標(biāo)準(zhǔn)的編程模式,編程環(huán)境和體系結(jié)構(gòu)方面絕大部分被當(dāng)做商業(yè)機(jī)密,沒(méi)有對(duì)研究人員公開(kāi),可參考的資料就有限,研究人員在研究并行算法的同時(shí)還必須研究如何使GPU在進(jìn)行通用計(jì)算時(shí)取得最高的性能。針對(duì)上面的問(wèn)題,研究人員已經(jīng)提出了GPU通用編程模型和方法,無(wú)疑推動(dòng)了GPU在非圖形學(xué)領(lǐng)域的應(yīng)用。
最近幾年,在GPGPU方面取得了不少的成果,比如代數(shù)計(jì)算及流體模擬、數(shù)據(jù)庫(kù)操作、頻譜變換和濾波等。軟件編程方面也有成果,高級(jí)繪制語(yǔ)言及實(shí)時(shí)繪制語(yǔ)言(繪制程序設(shè)計(jì)的思想源自于早年P(guān)ixar設(shè)計(jì)的RenderMan繪制軟件,此軟件多年來(lái)廣泛應(yīng)用于好萊塢電影制作的繪制),OpenGL shading language、斯坦福大學(xué)的RTSL(real- time shading language)、Microsoft的HLSL(high- level shading language) 以及NVIDIA的Cg在此方面具有較大的影響;流處理機(jī)編程環(huán)境及工具已開(kāi)發(fā)出來(lái)擴(kuò)大GPU的編程。
6. 結(jié)語(yǔ)
目前,CUDA和GPU的配合還不是很默契,真正面向民用市場(chǎng)還需一些時(shí)日,圖形處理的市場(chǎng)越來(lái)越大,給GPU的發(fā)展提供了強(qiáng)大的驅(qū)動(dòng)力。GPU應(yīng)用于通用計(jì)算領(lǐng)域已經(jīng)取得了一定的進(jìn)展,GPU的身影會(huì)逐漸地出現(xiàn)在民用市場(chǎng)。
GPU和CPU的最終結(jié)果會(huì)怎樣?眾多因素的影響現(xiàn)在還不得而知。GPU會(huì)不會(huì)像386時(shí)代一樣,最初作為獨(dú)立芯片的數(shù)學(xué)協(xié)處理器387,最終融合到CPU中而消亡或者NVIDIA真的開(kāi)發(fā)出像CPU那樣能處理各種通用運(yùn)算的GPU,GPU時(shí)代到來(lái)。無(wú)數(shù)的遐想出現(xiàn)在我們的頭腦,還是讓市場(chǎng)來(lái)決定這個(gè)容易引起爭(zhēng)議的問(wèn)題。