在互聯(lián)網(wǎng)行業(yè),隨著信息化的普及,數(shù)據(jù)量的暴增使得人們對(duì)存儲(chǔ)空間又有了新要求,同時(shí),機(jī)器學(xué)習(xí)、人工智能、無人駕駛、工業(yè)仿真等領(lǐng)域的崛起,使得通用CPU在處理海量計(jì)算、海量數(shù)據(jù)/圖片時(shí)遇到越來越多的性能瓶頸,如并行度不高、帶寬不夠、時(shí)延高等。
為了應(yīng)對(duì)計(jì)算多元化的需求,越來越多的場(chǎng)景開始引入GPU、FPGA等硬件進(jìn)行加速,異構(gòu)計(jì)算應(yīng)運(yùn)而生。異構(gòu)計(jì)算(Heterogeneous Computing),主要指不同類型的指令集和體系架構(gòu)的計(jì)算單元組成的系統(tǒng)的計(jì)算方式。
20世紀(jì)80年代,異構(gòu)計(jì)算技術(shù)就已經(jīng)誕生了。所謂的異構(gòu),就是CPU、DSP、GPU、ASIC、協(xié)處理器、FPGA等各種計(jì)算單元、使用不同的類型指令集、不同的體系架構(gòu)的計(jì)算單元,組成一個(gè)混合的系統(tǒng),執(zhí)行計(jì)算的特殊方式,就叫做“異構(gòu)計(jì)算”。
特別是在人工智能領(lǐng)域,異構(gòu)計(jì)算大有可為。眾所周知,AI意味著對(duì)計(jì)算力的超高要求,目前以GPU為代表的異構(gòu)計(jì)算已成為加速AI創(chuàng)新的新一代計(jì)算架構(gòu)。
我們?yōu)槭裁葱枰悩?gòu)計(jì)算?
談到計(jì)算,我們通常會(huì)想到CPU,但是CPU屬于通用計(jì)算,受制于摩爾定律,隨著計(jì)算多元化的發(fā)展,特別是應(yīng)用類型的多樣化,導(dǎo)致CPU在處理某些計(jì)算類型方面出現(xiàn)“力不從心”的情況。引入特定的單元讓計(jì)算系統(tǒng)變成混合結(jié)構(gòu)成為了必然,每一種不同類型的計(jì)算單元都可以執(zhí)行自己最山擅長的任務(wù)。
CPU雖然運(yùn)算不行,但是擅長管理和調(diào)度,比如讀取數(shù)據(jù),管理文件,人機(jī)交互等,例程多,輔助工具也很多;GPU管理更弱,運(yùn)算更強(qiáng),但由于是多進(jìn)程并發(fā),更適合整塊數(shù)據(jù)進(jìn)行流處理的算法;FPGA能管理能運(yùn)算,但是開發(fā)周期長,復(fù)雜算法開發(fā)難度大。適合流處理算法,不管是整塊數(shù)據(jù)進(jìn)還是一個(gè)一個(gè)進(jìn)。還有實(shí)時(shí)性來說,F(xiàn)PGA是最高的。
當(dāng)人工智能等海量計(jì)算力訴求到來之后,GPU、FPGA配合CPU進(jìn)行計(jì)算也就“水到渠成”了。
異構(gòu)計(jì)算的兩大派別——GPU和FPGA
我們最熟悉的異構(gòu)計(jì)算平臺(tái)就是“CPU+GPU”以及“CPU+FPGA” 架構(gòu)。這些典型異構(gòu)計(jì)算架構(gòu)最大的優(yōu)點(diǎn)是具有比傳統(tǒng)CPU并行計(jì)算更高效率和低延遲的計(jì)算性能,尤其是業(yè)界對(duì)計(jì)算性能需求水漲船高的情況下,異構(gòu)計(jì)算變得愈發(fā)重要,整個(gè)計(jì)算行業(yè)生態(tài)無一不在此發(fā)力。
眾所周知,相比CPU,GPU和FPGA擁有太多的優(yōu)勢(shì),GPU有更高的并行度、更高的單機(jī)計(jì)算峰值、更高的計(jì)算效率;而FPGA的優(yōu)勢(shì)則主要體現(xiàn)在它擁有更高的每瓦性能、非規(guī)整數(shù)據(jù)計(jì)算更高的性能、更高的硬件加速性能、更低的設(shè)備互聯(lián)延遲。
目前異構(gòu)計(jì)算使用最多的是利用GPU來加速。主流GPU都采用了統(tǒng)一架構(gòu)單元,憑借強(qiáng)大的可編程流處理器陣容,GPU在單精度浮點(diǎn)運(yùn)算方面將CPU遠(yuǎn)遠(yuǎn)甩在身后。各個(gè)GPU廠家都推出了適用于通用計(jì)算的GPU,GPGPU(General Perpose GPU)。一時(shí)間,整個(gè)業(yè)界都在談?wù)揋PU計(jì)算。
除了GPU,F(xiàn)PGA成為近年半導(dǎo)體產(chǎn)業(yè)的熱點(diǎn)。FPGA作為一種高性能、低功耗的可編程芯片,可以根據(jù)客戶定制來做針對(duì)性的算法設(shè)計(jì)。所以在處理海量數(shù)據(jù)的時(shí)候,F(xiàn)PGA 相比于CPU 和GPU,優(yōu)勢(shì)在于:FPGA計(jì)算效率更高,F(xiàn)PGA更接近IO。
PGA不采用指令和軟件,是軟硬件合一的器件。對(duì)FPGA進(jìn)行編程要使用硬件描述語言,硬件描述語言描述的邏輯可以直接被編譯為晶體管電路的組合。所以FPGA實(shí)際上直接用晶體管電路實(shí)現(xiàn)用戶的算法,沒有通過指令系統(tǒng)的翻譯。
當(dāng)然除了GPU和FPGA,ASIC也是目前計(jì)算芯片的一種選擇。ASIC是一種專用芯片,與傳統(tǒng)的通用芯片有一定的差異,是為了某種特定的需求而專門定制的芯片。ASIC芯片的計(jì)算能力和計(jì)算效率都可以根據(jù)算法需要進(jìn)行定制,所以ASIC與通用芯片相比,具有以下幾個(gè)方面的優(yōu)越性:體積小、功耗低、計(jì)算性能高、計(jì)算效率高、芯片出貨量越大成本越低。但是缺點(diǎn)也很明顯:算法是固定的,一旦算法變化就可能無法使用。
目前人工智能屬于大爆發(fā)時(shí)期,大量的算法不斷涌出,遠(yuǎn)沒有到算法平穩(wěn)期,ASIC專用芯片如何做到適應(yīng)各種算法是個(gè)最大的問題。
不同處理器芯片在構(gòu)建異構(gòu)計(jì)算方面有著自己的鮮明特點(diǎn)。CPU、GPU領(lǐng)域存在大量的開源軟件和應(yīng)用軟件,任何新的技術(shù)首先會(huì)用CPU實(shí)現(xiàn)算法,因此CPU編程的資源豐富而且容易獲得,開發(fā)成本低而開發(fā)周期。FPGA的實(shí)現(xiàn)采用Verilog/VHDL等底層硬件描述語言實(shí)現(xiàn),需要開發(fā)者對(duì)FPGA的芯片特性有較為深入的了解,但其高并行性的特性往往可以使業(yè)務(wù)性能得到量級(jí)的提升;同時(shí)FPGA是動(dòng)態(tài)可重配的,當(dāng)在數(shù)據(jù)中心部署之后,可以根據(jù)業(yè)務(wù)形態(tài)來配置不同的邏輯實(shí)現(xiàn)不同的硬件加速功能。
ASIC芯片可以獲得最優(yōu)的性能,即面積利用率高、速度快、功耗低;但是AISC開發(fā)風(fēng)險(xiǎn)極大,需要有足夠大的市場(chǎng)來保證成本價(jià)格,而且從研發(fā)到市場(chǎng)的時(shí)間周期很長,不適合例如深度學(xué)習(xí)CNN等算法正在快速迭代的領(lǐng)域。
結(jié)語
當(dāng)前計(jì)算多元化趨勢(shì)不可阻擋,單一的CPU已經(jīng)無法計(jì)算力的需求。在這種情況下,以GPU和FPGA為代表的異構(gòu)計(jì)算大行其道。特別是人工智能、大數(shù)據(jù)、物聯(lián)網(wǎng)等新技術(shù)的推動(dòng),應(yīng)用類型呈現(xiàn)多樣化,其對(duì)計(jì)算的需求也呈現(xiàn)差異化的特點(diǎn)。不管是“CPU+GPU”還是“CPU+FPGA” ,都是為了更好地服務(wù)個(gè)性化的計(jì)算需求。
可以預(yù)見的是隨著計(jì)算產(chǎn)業(yè)的演進(jìn),異構(gòu)計(jì)算具有廣泛的發(fā)展空間,我們也會(huì)看到越來越多的異構(gòu)計(jì)算架構(gòu)在承載應(yīng)用方面發(fā)揮越來越重要的作用。
聯(lián)系客服