GPU作為一種協(xié)處理器,傳統(tǒng)用途主要是處理圖像類并行計(jì)算任務(wù);計(jì)算機(jī)系統(tǒng)面對的計(jì)算任務(wù)有著復(fù)雜而不同的性能要求,當(dāng) CPU 無法滿足特定處理任務(wù)時(shí),則需要一個(gè)針對性的協(xié)處理器輔助計(jì)算。GPU 就是針對圖像計(jì)算高并行度,高吞吐量,容忍高延遲而定制的并行處理器。本文選自“從軟件算法生態(tài)看GPU發(fā)展與局限”,重點(diǎn)介紹GPU原理、GPU場景、局限性等,具體內(nèi)容如下:
1、GPU是什么?
2、為什么需要GPU等協(xié)處理器?
3、GPU還能干什么?
4、GPU不適合干什么?
5、GPU總體市場現(xiàn)狀
第一章、GPU簡介
GPU其原始設(shè)計(jì)針對圖像計(jì)算的特性進(jìn)行優(yōu)化,因此也能兼職一些與圖像計(jì)算特性接近的大規(guī)模并行標(biāo)準(zhǔn)浮點(diǎn)數(shù)計(jì)算任務(wù),如科學(xué)計(jì)算與數(shù)值模擬。但大規(guī)模并行計(jì)算并非一個(gè)籠統(tǒng)的概念,而是一個(gè)可以按照計(jì)算性能需求在6個(gè)維度上進(jìn)行細(xì)分的大類別。因此GPU絕非解決大規(guī)模并行計(jì)算問題的萬金油,無法很好的支持與圖形計(jì)算特性相差較大的并行計(jì)算任務(wù)。
1.1、GPU 是什么?
GPU其他名稱有顯示核心、視覺處理器、顯示芯片。顧名思義,GPU最主要的應(yīng)用場景就是處理圖像顯示計(jì)算。計(jì)算機(jī)圖像顯示流程見圖,在這個(gè)過程中CPU決定了顯示內(nèi)容,而GPU則決定了顯示的質(zhì)量如何。像GPU這類輔助CPU完成特定功能芯片統(tǒng)稱“協(xié)處理器”,“協(xié)”字表明了GPU在計(jì)算機(jī)體系中處于從屬地位。
?
?
GPU芯片可根據(jù)與CPU的關(guān)系分為獨(dú)立GPU和集成GPU。獨(dú)立GPU通常圖形處理能力更高一些,但也有成本更高,功耗和發(fā)熱較大等問題。近年集成式GPU流行于移動(dòng)計(jì)算平臺(tái)如筆記本和智能手機(jī)。例如高通的智能手機(jī)芯片通常將CPU和一個(gè)功能較弱的GPU以及其他協(xié)處理器通過SoC(System on Chip,片上系統(tǒng))技術(shù)組合在一起。集成GPU圖形計(jì)算性能相對獨(dú)立GPU較弱但功耗/成本均針對了移動(dòng)計(jì)算平臺(tái)的需求做了優(yōu)化,將長期占據(jù)移動(dòng)計(jì)算市場。
?
?
1.2、為什么需要 GPU 等協(xié)處理器?
在計(jì)算機(jī)系統(tǒng)中,之所以出現(xiàn)GPU等協(xié)處理器,歸根到底在于沒有一種芯片設(shè)計(jì)方案能夠滿足所有不同類別計(jì)算任務(wù)所需求的全部性能指標(biāo):
計(jì)算精度;
計(jì)算并行度;
計(jì)算延遲;
計(jì)算吞吐量;
并行進(jìn)程之間的交互復(fù)雜度;
計(jì)算實(shí)時(shí)性要求;
魚和熊掌不可兼得;在設(shè)計(jì)計(jì)算機(jī)芯片中,以上六個(gè)指標(biāo)不可能在有限的資源約束下同時(shí)滿足。圖的雷達(dá)圖比較了CPU的設(shè)計(jì)偏向(藍(lán)線)以及圖形計(jì)算的要求(紅線),越靠近外圈則表示要求高/性能好,如計(jì)算延遲低、計(jì)算吞吐量大。
?
?
我們可以發(fā)現(xiàn)CPU設(shè)計(jì)的一部分偏好,如并行進(jìn)程交互能力強(qiáng),低計(jì)算延遲是圖形計(jì)算所不需要的;但圖形計(jì)算要求的高計(jì)算并行度,高計(jì)算吞吐量是CPU所不能提供的。將CPU應(yīng)用在圖形處理中會(huì)造成一部分性能被浪費(fèi),而另一些性能CPU無法滿足要求(雷達(dá)圖上紅線和藍(lán)線的顯著差異);這提供了GPU這種針對圖形技術(shù)優(yōu)化芯片性能指標(biāo)的協(xié)處理器的生存空間。在廣義計(jì)算系統(tǒng)體系中,其他類別的協(xié)處理器,如DSP,FPGA,BP等協(xié)處理器之所以獨(dú)立存在,均因?yàn)槠渌幚淼奶囟ㄓ?jì)算任務(wù)在計(jì)算指標(biāo)雷達(dá)圖中與CPU以及其他協(xié)處理器差異過大。一個(gè)協(xié)處理器產(chǎn)業(yè)是否有足夠的市場空間主要取決于其針對的計(jì)算任務(wù)在性能雷達(dá)圖中是否獨(dú)特(否則會(huì)被CPU等“兼職”),以及這種計(jì)算任務(wù)是否有足夠大市場需求。
1.3、GPU 還能干什么?
GPU生產(chǎn)廠商針對圖形處理的性能要求將資源分配強(qiáng)化兩個(gè)特定指標(biāo):計(jì)算并行度和計(jì)算吞吐量。除了圖形計(jì)算以外,還有一些計(jì)算任務(wù)的性能雷達(dá)圖落在GPU的性能范圍內(nèi)或相差不甚太遠(yuǎn)(見圖),比如數(shù)值仿真模擬、金融類計(jì)算、搜索引擎、數(shù)據(jù)挖掘等。
?
?
正因看中拓展GPU在特殊計(jì)算任務(wù)的應(yīng)用前景,主流的GPU廠商紛紛推出軟硬件結(jié)合的并行編程解決方案。例如Nvidia推出閉源的CUDA并行計(jì)算平臺(tái),而AMD推出了基于開放性O(shè)penCL標(biāo)準(zhǔn)的Stream技術(shù)。這類技術(shù)在軟件上提供一個(gè)定制的編譯器,將計(jì)算任務(wù)盡可能分解成可獨(dú)立并行執(zhí)行的小組件(術(shù)語為“線程”);在硬件上對GPU進(jìn)行小幅度修改,少量提高其在延遲/并行交互等傳統(tǒng)弱項(xiàng)的性能。雖然GPU的并行計(jì)算能力與金融數(shù)據(jù)處理需求存在一定匹配(圖4中紅線和藍(lán)線相近),但金融核心賬本計(jì)算中需要遠(yuǎn)超過一般計(jì)算平臺(tái)的精度。GPU內(nèi)部搭載的2進(jìn)制計(jì)算單元無法保障賬本分毫不差;金融業(yè)的核心賬本計(jì)算業(yè)務(wù)長期依賴搭載10進(jìn)制計(jì)算單元的IBM Power系列高端處理器。如果改造GPU使其搭載10進(jìn)制硬件計(jì)算單元,則其又無法適應(yīng)圖形計(jì)算的需求。這個(gè)案例充分說明:并非所有并行計(jì)算任務(wù)就一定適合GPU計(jì)算,而需要根據(jù)實(shí)際情況區(qū)分。
1.4、GPU 不適合干什么?
GPU屬于大規(guī)模并行計(jì)算芯片的一個(gè)子類;但其并不能解決所有的大規(guī)模并行計(jì)算任務(wù)。大規(guī)模并行計(jì)算芯片可粗略劃分為兩大組成部分:
1)并行計(jì)算單元,數(shù)目從數(shù)個(gè)至數(shù)千個(gè)不等,完成“線程”計(jì)算;
2)NoC(Network on Chip,片上通訊網(wǎng)絡(luò)),負(fù)責(zé)在計(jì)算單元之間傳遞數(shù)據(jù);針對不同的計(jì)算需求場景,大規(guī)模并行計(jì)算芯片的設(shè)計(jì)思路大體有兩個(gè)方向:1)處理單元優(yōu)化:包括增減處理器單元數(shù)量或改變處理器單元內(nèi)部的結(jié)構(gòu)等;2)NoC網(wǎng)絡(luò)優(yōu)化:更改網(wǎng)絡(luò)拓?fù)?、網(wǎng)絡(luò)路由算法、優(yōu)化網(wǎng)絡(luò)控制機(jī)制等;這兩個(gè)方向上的優(yōu)化需要分享芯片上有限的資源;強(qiáng)化一個(gè)方向的性能/增加某個(gè)方向的資源分配往往就意味著需要犧牲另一個(gè)方向的性能。多核CPU、GPU、FPGA是常見的并行計(jì)算架構(gòu),它們的資源分配傾向示意圖見圖。
?
?
GPU將主要資源分配給了圖形常用計(jì)算單元,如浮點(diǎn)數(shù)的乘法和加法,而采用了最簡單的片上網(wǎng)絡(luò)拓?fù)洌簶錉頝oC網(wǎng)絡(luò),在基本計(jì)算單元之間傳遞數(shù)據(jù),見圖;這種片上網(wǎng)絡(luò)的優(yōu)缺點(diǎn)分別是:
優(yōu)點(diǎn)1:消耗的資源最小;
缺點(diǎn)1:通過讀寫片上存儲(chǔ)的方式傳遞數(shù)據(jù),速度較慢;
缺點(diǎn)2:樹根結(jié)點(diǎn)容易因通訊堵塞成為瓶頸,如圖中紅線和藍(lán)線分別表示A計(jì)算節(jié)點(diǎn)向B,C向D傳遞數(shù)據(jù),兩個(gè)傳遞過程在根節(jié)點(diǎn)和二級共享節(jié)點(diǎn)交匯,當(dāng)片上數(shù)據(jù)傳遞頻繁時(shí),樹狀拓?fù)銷oC極易發(fā)生堵塞問題。
?
?
GPU之所以采用樹狀拓?fù)浣Y(jié)構(gòu),概因其“主業(yè)”-圖形計(jì)算僅有少量情形需要在計(jì)算節(jié)點(diǎn)之間做復(fù)雜數(shù)據(jù)通信,因此采用樹狀拓?fù)湟酝獾姆桨甘羌兇獾睦速M(fèi)。但樹狀拓?fù)浣Y(jié)構(gòu)限制了相當(dāng)多類別的大規(guī)模并行計(jì)算任務(wù)在GPU上發(fā)揮,換句話說,下列這些并行計(jì)算任務(wù)并不是GPU擴(kuò)展的強(qiáng)項(xiàng):
帶有較多分支判斷類的并行計(jì)算任務(wù),典型任務(wù)如人機(jī)交互、電腦和環(huán)境交互中的邏輯判斷計(jì)算等;
并行計(jì)算中帶有較多串行成分,以及反饋算法的并行計(jì)算任務(wù),典型例子如控制系統(tǒng)計(jì)算任務(wù);
帶有網(wǎng)狀結(jié)構(gòu)數(shù)據(jù)流的并行計(jì)算。典型案例為FFT(傅里葉分析)計(jì)算任務(wù),CUDA中的FFT優(yōu)化后可以提供相對CPU約10倍的提速,但當(dāng)FFT長度超過某個(gè)門限后GPU的提升性能就發(fā)生下滑(資料來源:NV官網(wǎng))。DSP芯片往往針對FFT的算法特性提供定制優(yōu)化,沒有GPU存在的問題,因此手機(jī)SoC中往往由DSP而不是GPU處理FFT這種網(wǎng)狀大規(guī)模并行計(jì)算。
審核編輯:湯梓紅
評論
查看更多