新趨勢(shì):FPGA協(xié)處理器為HPC加速
隨著計(jì)算機(jī)技術(shù)的發(fā)展,人們開始把它應(yīng)用到越來越多的領(lǐng)域,例如金融分析、科學(xué)計(jì)算、網(wǎng)絡(luò)服務(wù)應(yīng)用、醫(yī)療成像等等。雖然這些不同領(lǐng)域有著各異的應(yīng)用程序和算法,但對(duì)于高性能的計(jì)算機(jī)而言,它們共同的需求就是,對(duì)程序要有強(qiáng)大的執(zhí)行效率,并且能夠?qū)崿F(xiàn)較快的計(jì)算速度。
為了提高HPC的計(jì)算能力,在最近的幾年中,人們開始把其他各種高性能架構(gòu)開始向機(jī)群系統(tǒng)轉(zhuǎn)移。然而,目前的機(jī)群系統(tǒng)大多還是傳統(tǒng)的CPU,為了追求計(jì)算能力,僅僅是不停的增加計(jì)算節(jié)點(diǎn),最終服務(wù)器會(huì)堆到機(jī)房外面。
如果在HPC系統(tǒng)中的計(jì)算節(jié)點(diǎn)上加入FPGA(現(xiàn)場可編程門陣列)作為協(xié)處理器,通過對(duì)FPGA進(jìn)行特定程序算法優(yōu)化,可以大大提高對(duì)特定應(yīng)用程序的執(zhí)行效率,同時(shí)還可以大大降低系統(tǒng)的功耗,并降低系統(tǒng)TCO。
隨著主流服務(wù)器芯片廠商中AMD和Intel先后開放了CPU接口總線IP核,使得FPGA同CPU總線直接接口變得更加容易,而不需要再采用IO接口進(jìn)行設(shè)計(jì)專門的協(xié)處理IO卡。目前已經(jīng)有大量的廠商開始提供相關(guān)的協(xié)處理器。
HPC變遷趨勢(shì)和機(jī)群架構(gòu)的新問題
對(duì)于高性能計(jì)算(HPC),其特點(diǎn)是計(jì)算能力強(qiáng),一般為特別設(shè)計(jì)的超級(jí)計(jì)算機(jī)。之前的超級(jí)計(jì)算機(jī)架構(gòu)多是SMP、MPP、SMD等,圖1所示為TOP500中HPC的架構(gòu)變遷。
集群(Cluster)技術(shù)是近幾年興起的發(fā)展高性能計(jì)算機(jī)的一項(xiàng)技術(shù),采用Cluster體系結(jié)構(gòu)集群系統(tǒng),具有可自由伸縮、高度可管理、高可用、高性能價(jià)格比等諸多優(yōu)點(diǎn),從圖1中我們可以看到機(jī)群系統(tǒng)逐漸在HPC應(yīng)用上取代MPP開始占據(jù)主流位置。
圖1 TOP500中系統(tǒng)架構(gòu)發(fā)展情況
雖然機(jī)群系統(tǒng)有著上述種種優(yōu)勢(shì),但由于使用了通用的處理器,隨著應(yīng)用對(duì)計(jì)算能力需求的日益增加,人們不得不被動(dòng)增加計(jì)算結(jié)點(diǎn)數(shù)目,增加CPU數(shù)目來應(yīng)對(duì)計(jì)算能力需求的提升。目前的機(jī)群系統(tǒng)從原來的幾十個(gè)計(jì)算結(jié)點(diǎn),到現(xiàn)在的成百上千個(gè)結(jié)點(diǎn),甚至到不遠(yuǎn)的將來上萬個(gè)計(jì)算結(jié)點(diǎn),機(jī)群系統(tǒng)的不足也隨之日趨明顯。主要體現(xiàn)在:第一、受機(jī)柜高度和傳統(tǒng)1U機(jī)箱的限制,計(jì)算密度比較疏松,而且密度無法突破;第二、安裝維護(hù)工作量和成本過大;第三、對(duì)于大規(guī)模機(jī)群,功耗日趨成為瓶頸;第四、智能而有效的管理監(jiān)控成為大規(guī)模機(jī)群系統(tǒng)新的挑戰(zhàn)。所有這些問題都會(huì)導(dǎo)致數(shù)據(jù)中心的整體擁有成本的增加(TCO),這對(duì)于長期運(yùn)營的數(shù)據(jù)中心而言,是最不想看到的。
而最大的問題在于,對(duì)于所有的應(yīng)用而言,都采用同樣的CPU進(jìn)行運(yùn)算處理,而像金融分析、生物計(jì)算、科學(xué)計(jì)算,對(duì)CPU資源的需求是不同的,因此采用同樣的系統(tǒng),就不能夠?qū)嶋H獲得機(jī)群系統(tǒng)所標(biāo)稱的性能。
目前,人們開始尋找一種替代方式,可以看到的是采用基于FPGA的協(xié)處理器來加速應(yīng)用軟件的關(guān)鍵算法執(zhí)行。這種方式類似于以前提出過的在C++代碼中的內(nèi)層循環(huán)采用匯編語言來直接編寫,以優(yōu)化關(guān)鍵程序運(yùn)行。
相對(duì)于目前的X86處理器而言,F(xiàn)PGA一般都運(yùn)行在比較低的時(shí)鐘頻率下,優(yōu)勢(shì)在于有著較高的內(nèi)存帶寬、突出的并行處理能力和出色的根據(jù)應(yīng)用環(huán)境的硬件定制化能力。如果同在服務(wù)器上增加一顆處理器/內(nèi)核比較,僅僅在服務(wù)器上增加一顆FPGA的協(xié)處理器,一般情況下性能可以提高2至3倍,而功耗則可以降低40%,根據(jù)應(yīng)用情況進(jìn)行算法優(yōu)化的話,最大可以提高性能達(dá)10倍。
FPGA協(xié)處理器為HPC 加速
正如上文所言,目前HPC應(yīng)用涵蓋了多個(gè)領(lǐng)域,有著不同的計(jì)算需求。例如在商業(yè)數(shù)據(jù)分析和基因測序中,要進(jìn)行大量的數(shù)組運(yùn)算、線形數(shù)據(jù)匹配、邏輯測試等等,而對(duì)于醫(yī)療成像、計(jì)算化學(xué)而言,其主要工作是同步映射、過濾等等。這些不同的應(yīng)用需要不同的數(shù)學(xué)邏輯操作以及有效的內(nèi)存連接讀取等。
通用的CPU、專用的圖像處理CPU(目前稱之為GPU)或網(wǎng)絡(luò)處理CPU,都無法為HPC應(yīng)用提供一個(gè)可選的通用解決方案。而FPGA作為一個(gè)可重構(gòu)計(jì)算引擎,可以在軟件控制下進(jìn)行硬件單元優(yōu)化工作,來滿足不同HPC應(yīng)用需求,從而提供計(jì)算效率。從某種程度上說,采用基于FPGA協(xié)處理器的可重構(gòu)計(jì)算硬件平臺(tái),可以有可能讓HPC在各種應(yīng)用軟件下達(dá)到很高的效率。
FPGA通過把高性能計(jì)算算法中固有的并行運(yùn)算部分硬件化來實(shí)現(xiàn)HPC應(yīng)用加速。其實(shí)這種并行可分為多個(gè)等級(jí),在機(jī)群計(jì)算中在多個(gè)CPU上進(jìn)行任務(wù)的多線程分配我們可以稱之為“任務(wù)級(jí)并行”。第二級(jí)并行我們稱之為“指令并行”,傳統(tǒng)的CPU支持?jǐn)?shù)量有限的指令并發(fā)處理,就是CPU指令流水線的管道數(shù)或者發(fā)射數(shù)比較有限。而FPGA則可以提供很多管道,也就是說可以同時(shí)并行執(zhí)行大量的指令?!皵?shù)據(jù)并行”是FPGA很容易實(shí)現(xiàn)的第三級(jí)并行處理能力,F(xiàn)PGA的結(jié)構(gòu)非常容易實(shí)現(xiàn)并行操作。因而,通過配置,它可以同時(shí)執(zhí)行大量的數(shù)據(jù)吞吐操作,在這種情況下,該設(shè)備相當(dāng)于多個(gè)傳統(tǒng)CPU在同時(shí)工作。
如果實(shí)現(xiàn)上述三種級(jí)別的并行處理,一個(gè)200Mhz的FPGA處理能力將遠(yuǎn)遠(yuǎn)超過一個(gè)3Ghz的通用CPU,然而功耗僅僅是后者的1/4。例如在生物計(jì)算中,F(xiàn)PGA在處理DNA基因排序上能往往能夠比通用CPU加速50倍到100倍;而在醫(yī)療CT的2D/3D圖像處理上能夠加速10倍左右;而對(duì)與一些通用的算法如FFT,一般情況下FPGA的加速至少可以達(dá)到10倍以上。
一個(gè)標(biāo)準(zhǔn)FPGA協(xié)處理器的例子
本文以XtremeData公司的協(xié)處理器產(chǎn)品為例,介紹其應(yīng)用環(huán)境及工作流程。圖二是XtremeData 公司的x86 FPGA 協(xié)處理器實(shí)物以及應(yīng)用平臺(tái)情況。從圖中可以看出,該協(xié)處理器產(chǎn)品可以直接放置在普通的4路或者兩路Opteron系統(tǒng)上,該系統(tǒng)可以是機(jī)架式服務(wù)器或刀片產(chǎn)品。
{{分頁}}
該協(xié)處理器模塊同CPU管教兼容,同時(shí)可以直接使用板上連接在協(xié)處理器上的內(nèi)存條,或者通過HT總線使用其他CPU上連接的內(nèi)存條。這種結(jié)構(gòu)有很大的優(yōu)勢(shì),主板可以不用作任何改動(dòng),也就是說在普通的服務(wù)器上可以即插即用,同時(shí)還可以直接利用主板資源,并獲取很大的HT總線帶寬和低延遲。
圖2 典型協(xié)處理器應(yīng)用架構(gòu)
其工作原理把適用于該芯片的算法庫安裝在主機(jī)上,根據(jù)應(yīng)用不同,主機(jī)上的GUI可以在線配置和更改FPGA內(nèi)硬件進(jìn)行不用算法的優(yōu)化。當(dāng)然,前提是對(duì)于各種HPC應(yīng)用都要實(shí)現(xiàn)完成算法庫的編寫,并轉(zhuǎn)換成FGPA可以識(shí)別的硬件描述語言庫,通過加載該語言庫,可更改FPGA內(nèi)部硬件結(jié)構(gòu),實(shí)現(xiàn)應(yīng)用程序的硬件加速。圖3為系統(tǒng)工作流程。
圖3 協(xié)處理器配置和實(shí)現(xiàn)過程
在執(zhí)行過程中,對(duì)于并行性較強(qiáng)、浮點(diǎn)運(yùn)算需求較高的計(jì)算可以通過后HT總線丟給協(xié)處理器進(jìn)行計(jì)算,并持續(xù)獲取計(jì)算結(jié)果,主CPU主要負(fù)責(zé)IO處理以及程序調(diào)度工作,從而實(shí)現(xiàn)協(xié)處理器的加速工作。
CPU廠商持開放態(tài)度
CPU廠商目前對(duì)協(xié)處理器的出現(xiàn)并沒有持抵制態(tài)度,而是比較支持協(xié)處理器的開發(fā)。
AMD率先提出Torenza協(xié)處理平臺(tái),允許第三方處理器與Opteron合作,開放相關(guān)接口。之后,Intel在IDF上也提出了自己的系統(tǒng)架構(gòu)開放計(jì)劃。Intel高級(jí)副總裁Pat Gelsinger宣布,Intel將向Xilinx等第三方FPGA生產(chǎn)商開放前端總線(FSB)授權(quán),以便他們的芯片能通過前端總線和內(nèi)存控制器(MCH)的直連與Intel處理器協(xié)同工作。如同AMD的HyperTransport總線,Intel的前端總線授權(quán)也能讓各種加速單元加入一個(gè)高帶寬、低延遲的總線,從而在Intel系統(tǒng)中與MCH直接相連。
至此,兩個(gè)通用處理器的巨人對(duì)協(xié)處理器都抱著支持和看好的態(tài)度,大大方便了第三方廠商進(jìn)行協(xié)處理器同通用處理器的接口的開發(fā)工作。
總之,從市場來看,目前IBM 的cell、美國的Cleaspeed、DRC、Mitrionics和Celoxic等公司都有相應(yīng)產(chǎn)品提供。在目前的應(yīng)用中,Sun公司在為東京理工大學(xué)制造的超級(jí)計(jì)算機(jī)就采用了ClearSpeed的協(xié)處理器卡進(jìn)行了加速,Cray公司目前在超級(jí)計(jì)算機(jī)上也有應(yīng)用。
不過,該技術(shù)從目前的情況來看還不是很成熟,距離大規(guī)模商業(yè)應(yīng)用還有一定的距離。主要問題在于:不同的HPC領(lǐng)域應(yīng)用算法各異。而作為可重構(gòu)計(jì)算的FPGA協(xié)處理器,對(duì)于不同的算法都需要通過硬件描述語言解釋和實(shí)現(xiàn),需要進(jìn)行大量的算法庫的工作。而目前沒有公司能夠提供足夠多的IP核供使用,只能在少數(shù)應(yīng)用上進(jìn)行FPGA協(xié)處理器的加速。當(dāng)然,由于Linepacke是HPC的主要測試軟件,而各家公司的產(chǎn)品都可以加速Linpake的性能測試。
從長遠(yuǎn)看來,由于FPGA可重構(gòu)的協(xié)處理器有著上文描述的種種優(yōu)勢(shì),所以在將來的HPC應(yīng)用中,解決的不同算法的硬件描述轉(zhuǎn)化的問題后,將會(huì)得到大量的應(yīng)用。
c++相關(guān)文章:c++教程
加速度計(jì)相關(guān)文章:加速度計(jì)原理
評(píng)論