張澳博
(鄭州外國語學(xué)校,鄭州 450000)
GPU并行計算分析
張澳博
(鄭州外國語學(xué)校,鄭州 450000)
本文通過闡述GPU的基本原理和發(fā)展歷程,對比CPU與GPU之間設(shè)計目的的不同,來說明GPU在高并行度計算中的優(yōu)勢,并介紹GPU的其他重要應(yīng)用,提出將來可能的發(fā)展前景。
計算機(jī);并行計算;GPU
GPU取自Graphic Processing Unit的英文簡寫,譯為圖形處理單元。顧名思義,GPU是用來專門處理圖形運(yùn)算的處理單元,并且最初GPU的產(chǎn)生是為了將部分3D圖形處理功能從CPU中分出來,進(jìn)行硬件實現(xiàn),以達(dá)到加快3D圖形處理速度的目的。GPU的標(biāo)志性技術(shù)是將T&L(光影轉(zhuǎn)換)從CPU中分離出來,用硬件來加以支持,T&L是3D渲染中的一個不可或缺的重要部分,其作用是做幾何處理,主要計算圖形的3D角度位置和處理動態(tài)光線陰影效果。除此之外,GPU還包含其他重要技術(shù),例如立方環(huán)境材質(zhì)貼圖、紋理壓縮等等。
之后,GPU在發(fā)展中引入了可編程的特性,能夠?qū)D形硬件的流水線作為流處理器來解釋,基于GPU的通用計算也開始出現(xiàn),主要用于實現(xiàn)矩陣乘法運(yùn)算和數(shù)學(xué)擴(kuò)散方程求解。為了實現(xiàn)更復(fù)雜多變的圖形效果,除了依賴硬件T&L實現(xiàn)光影轉(zhuǎn)換,還要加強(qiáng)頂點和像素的運(yùn)算能力,因此又提出了頂點著色器和像素著色器的硬件邏輯實現(xiàn),用于支持可編程的頂點和像素,當(dāng)然,最初雖然引入了可編程特性,但是可編程性很弱,受到許多的硬件限制。不久以后,隨著可編程管線的出現(xiàn),GPU的可編程性能不斷加強(qiáng),GPU開始朝著SIMD處理器方向發(fā)展,SIMD是Single Instruction Multiple Data的英文簡稱,譯為單指令多數(shù)據(jù)流,主要特性是一條指令流可以同時處理多個數(shù)據(jù)流。此外,GPU的可編程性提高后,可編程浮點單元就變成GPU內(nèi)部的主要運(yùn)算力量。目前而言,面向GPU的統(tǒng)一計算架構(gòu)CUDA的出現(xiàn),使得GPU成為GPGPU(基于GPU的通用計算),只是它還保留最初被設(shè)計的專用圖像處理的功能。
由于GPU在浮點計算能力上的突出表現(xiàn)滿足了深度學(xué)習(xí)在分類、卷積兩大主要活動上的性能要求,并且達(dá)到了深度學(xué)習(xí)所需要的精準(zhǔn)度,使得大型神經(jīng)網(wǎng)絡(luò)能夠盡可能地發(fā)揮其作用,因此幾乎所有的深度學(xué)習(xí)計算平臺都采用了GPU用來加速。NVIDIA表示,深度學(xué)習(xí)需要很高的內(nèi)在并行度、大量的浮點計算能力以及矩陣預(yù)算,而GPU可以提供這些能力,并且在相同的精度下,相對傳統(tǒng)CPU的方式,擁有更快的處理速度、更少的服務(wù)器投入和更低的功耗。
GPU和CPU都是有很強(qiáng)運(yùn)算能力的芯片,且都能完成浮點運(yùn)算功能,它們之間在性能上表現(xiàn)出來的不同,主要來自于他們不同的設(shè)計目的。
CPU被設(shè)計成為一個“通才”,它要兼顧指令和數(shù)值的并行運(yùn)算,大部分的晶體管用在了Cache(高速緩沖存儲器)和控制電路上,控制電路十分的復(fù)雜,內(nèi)部僅有5%的ALU(算術(shù)邏輯單元,即運(yùn)算器);GPU則被設(shè)計成為一個以圖形類數(shù)值計算為核心的專注計算的“專才”,它對Cache需求不高,控制電路也較CPU簡單許多,于是它大部分的晶體管用在了計算單元上,內(nèi)部有40%的ALU。因此,CPU的設(shè)計目的是指令執(zhí)行的高效率,它的核心部分重復(fù)的設(shè)計不多,是計算機(jī)中設(shè)計最復(fù)雜的芯片,實現(xiàn)了程序執(zhí)行時的指令相關(guān)性和數(shù)據(jù)相關(guān)性等等復(fù)雜邏輯;GPU的設(shè)計目的則是面向矩陣類型的數(shù)值計算,它擁有大量重復(fù)設(shè)計的計算單元,用于實現(xiàn)大規(guī)模同類型數(shù)據(jù)的密集計算,最典型的就是圖形數(shù)據(jù)的矩陣運(yùn)算,這類計算可分成獨立數(shù)值計算單元,并且數(shù)據(jù)之間沒有程序執(zhí)行那樣的邏輯關(guān)聯(lián)性。
相比較于CPU的設(shè)計,GPU在一些需要耗費巨大運(yùn)算力的問題處理上顯得優(yōu)勢明顯,主要特點有:
⊙ GPU的核心數(shù)量眾多,被稱為“眾核”,能夠進(jìn)行并行計算。雖然GPU單個的運(yùn)算核心相較于CPU的工作頻率低,但是GPU在總體的性能功耗比和性能芯片面積比上優(yōu)于CPU很多。
⊙ GPU能夠在一定程度上隱藏全局延遲。主要是通過大量并行線程之間的交織運(yùn)行來達(dá)到這樣的目的。
⊙ GPU在線程之間的切換上的開銷遠(yuǎn)遠(yuǎn)低于CPU。
神經(jīng)網(wǎng)絡(luò)訓(xùn)練中,最重要的是訓(xùn)練速度,尤其是在深度學(xué)習(xí)中,它擁有的過多參數(shù)會耗費大量的時間。而在神經(jīng)網(wǎng)絡(luò)中,大量的運(yùn)算是關(guān)于矩陣的運(yùn)算,這剛好與GPU的優(yōu)勢相重合,GPU本來設(shè)計的目的就是處理舉行類型的數(shù)值計算,所以GPU非常適合神經(jīng)網(wǎng)絡(luò)訓(xùn)練。
GPU在并行計算上的優(yōu)勢無可厚非,視頻編碼解碼、矩陣運(yùn)算、醫(yī)療應(yīng)用、生命科學(xué)等研究應(yīng)用,因為需要大量重復(fù)的數(shù)據(jù)集運(yùn)算以及密集的內(nèi)存存取,都需要GPU相較于CPU而言更強(qiáng)悍的計算能力。但是GPU并行運(yùn)算是有前提的,它所處理的問題必須分成若干個可以并行執(zhí)行的部分。目前,很多問題其實并不滿足這個前提,大多數(shù)情況是后一個執(zhí)行依賴著前一個執(zhí)行的結(jié)果,這樣的存在依賴情況下,只能串行運(yùn)行,不能并行運(yùn)行,這樣一來,GPU顯得沒有用武之地。并且,GPU計算上的突出優(yōu)勢也僅僅體現(xiàn)在浮點運(yùn)算上,在整數(shù)運(yùn)算、邏輯運(yùn)算和控制運(yùn)算上,相較于CPU劣勢十分明顯。
因此,GPU要有長遠(yuǎn)的發(fā)展,以下幾個地方必須得到彌補(bǔ)。首先是分支預(yù)測能力,GPU需要擁有更好的分支能力,才能運(yùn)行更多復(fù)雜程序,更好地利用cache來掩蓋分支的延遲;其次是更大的緩存和Shared Memory,這種共享寄存器負(fù)責(zé)共享數(shù)據(jù)和臨時掛起線程,容量越大,線程跳轉(zhuǎn)和分支能力就越強(qiáng);線程粒度同樣重要,粒度越細(xì)能夠調(diào)用并行度來進(jìn)行指令延遲掩蓋的機(jī)會越大,性能衰減越小,而細(xì)化粒度對GPU的線程仲裁機(jī)制要求很大。
GPU發(fā)展到今天,已經(jīng)突破了無數(shù)技術(shù)屏障,最初因圖形處理而誕生的硬件發(fā)展成為今天大規(guī)模并行計算領(lǐng)域的一顆新星。隨著智能終端對于圖像顯示的要求越來越高,GPU的性能也會隨之越來越優(yōu)化,也會被越來越多的大型計算機(jī)所采用。
展望未來,GPU的發(fā)展方向應(yīng)該是CPU+GPU的混合構(gòu)架模式,這樣使得CPU與GPU優(yōu)勢互補(bǔ),將擁有高性能、低能耗的特點。
CPU與GPU各有所長,CPU擅長處理具有復(fù)雜計算步驟和復(fù)雜數(shù)據(jù)依賴的計算任務(wù),像操作系統(tǒng)、系統(tǒng)軟件和通用應(yīng)用程序這類擁有復(fù)雜指令調(diào)度、循環(huán)、分支、邏輯判斷以及執(zhí)行等的程序任務(wù)。它的并行優(yōu)勢是程序執(zhí)行層面的,程序邏輯的復(fù)雜度也限定了程序執(zhí)行的指令并行性,上百個并行程序執(zhí)行的線程基本看不到。GPU的眾核架構(gòu)非常適合把同樣的指令流并行發(fā)送到眾核上,采用不同的輸入數(shù)據(jù)執(zhí)行,它擅長的是圖形類的或者是非圖形類的高度并行數(shù)值計算,GPU可以容納上千個沒有邏輯關(guān)系的數(shù)值計算線程,它的優(yōu)勢是無邏輯關(guān)系數(shù)據(jù)的并行計算,它在數(shù)值分析、金融分析以及像排序和MapReduce這樣的海量數(shù)據(jù)處理上應(yīng)用十分廣泛。
因此,在一臺CPU+GPU的計算機(jī)系統(tǒng)中,CPU和GPU各司其職,除了圖形運(yùn)算,GPU主要集中在高效率低成本的高性能并行數(shù)值計算,協(xié)助CPU分擔(dān)這種類型的計算,提高整體系統(tǒng)的性能。
[1] 盧風(fēng)順,宋君強(qiáng),銀福康,張理論.CPU/GPU協(xié)同并行計算研究綜述[J].計算機(jī)科學(xué),2011,(03):5-9+46
[2] 張朝暉,劉俊起,徐勤建.GPU并行計算技術(shù)分析與應(yīng)用[J].信息技術(shù),2009,(11):86-89
[3] 姜曉麗,王偉,隋毅.GPU工作流程簡介[J].科技創(chuàng)新導(dǎo)報,2010,(24):46
10.3969/J.ISSN.1672-7274.2017.09.014
TP274文獻(xiàn)標(biāo)示碼:A
1672-7274(2017)09-0039-02