很久沒有看FPGA了,本來想繼續(xù)學(xué)習(xí)HLS,就上Xilinx的網(wǎng)站看了看。結(jié)果發(fā)現(xiàn)了SDx 開發(fā)環(huán)境,很新的一個(gè)東西。由于我對這方面了解不多,本篇博文僅僅只是資料的整合和介紹。
Xilinx官網(wǎng)這樣解釋SDx:SDx? 是一種面向系統(tǒng)和軟件工程師的開發(fā)環(huán)境。?SDx 讓沒有 FPGA 專業(yè)知識的系統(tǒng)和軟件工程師也能通過使用高層次編程語言,來獲益于帶有業(yè)界標(biāo)準(zhǔn)處理器的可編程硬件的強(qiáng)大威力。SDAccel 是首個(gè)面向 OpenCL、C 和 C++進(jìn)行架構(gòu)優(yōu)化的編譯器,并結(jié)合了#庫、開發(fā)板,可在FPGA上實(shí)現(xiàn)類似 CPU/GPU 的開發(fā)運(yùn)行體驗(yàn) 。
FPGA的結(jié)構(gòu),F(xiàn)PGA、GPU、CPU之間的優(yōu)勢劣勢在我的FPGA學(xué)習(xí)之基本結(jié)構(gòu)和高層次綜合(HLS)-簡介中略有涉及,網(wǎng)上也有大量的資料。簡單來說,F(xiàn)PGA是一種可編程的器件,采用HDL語言來編寫改變其結(jié)構(gòu)。其全并行等特性使得FPGA有極強(qiáng)的計(jì)算能力。但FPGA開發(fā)是困難的,之前的集成開發(fā)環(huán)境是ISE,通常采用VHDL或Verilog HDL編寫代碼。HDL,即硬件描述語言,所以這個(gè)時(shí)候是和軟件工程師沒什么關(guān)系的(不知道這樣說對不對)。
?后來主推Vivado,有了HLS(高層次綜合),倒有幾份文檔是面向軟件工程師的,但具體怎么樣,我也不太清楚——我并沒有使用過Vivado。但毫無疑問的是,Vivado不是面向“軟件工程師”的。
由此看來,SDx開發(fā)平臺對Xilinx應(yīng)該具有很大的意義。而SDAccel是其中最新的一個(gè)組成部分(另一個(gè)是SDNet,“軟”定義網(wǎng)絡(luò)),Xilinx的對SDAccel描述如下
2.FPGA計(jì)算
FPGA用于高效能計(jì)算,這個(gè)想法出項(xiàng)很長時(shí)間了。各大公司也進(jìn)行了一些嘗試,下一代計(jì)算設(shè)備CPU/GPU/FPGA:FPGA規(guī)模商用還需時(shí)日中提到了FPGA、CPU、GPU和DSP之間的對比,大體結(jié)果是GPU性能最強(qiáng)而FPGA具有更高的性能功耗比。文中還提到了微軟利用FPGA對Bing數(shù)據(jù)中心進(jìn)行加速的計(jì)劃,以及Baidu在這方面的研究。
關(guān)于微軟的項(xiàng)目,Microsoft, Baidu find speedier search results through specialized chips中有更詳細(xì)的介紹。這一項(xiàng)目中利用了Altera的FPGA,文中寫道Xilinx的V6系列FPGA曾經(jīng)被嘗試使用并被放棄。
至于百度,Xilinx官方給出的背景資料中提到了Baidu的研究。總結(jié)來說,F(xiàn)GPA計(jì)算在功率受限下具有很高的性能,可以用在數(shù)據(jù)中心的加速中。在Machine Learning中,F(xiàn)PGA在實(shí)現(xiàn)深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)上有很好的表現(xiàn)。(百度采用Mid-range FPGAs,利用的是K7系列XC7K480T)
這一點(diǎn)點(diǎn)的優(yōu)勢的背后是巨大的劣勢。首先,F(xiàn)PGA的計(jì)算能力不是最強(qiáng)的;其次,F(xiàn)PGA的開發(fā)環(huán)境不成熟,難度較大,時(shí)間周期長;其三,F(xiàn)PGA局限性大,支持性差。
3.SDAccel簡介
本節(jié)內(nèi)容主要來自或參考于SDAccel背景資料
這份文檔的副標(biāo)題是“Bringing The Best Performance/Watt to the Data Center”,也就是說這是對于功率受限的數(shù)據(jù)中心提出的,另一份白皮書中提到是“Tomorrow’s Data Center”這是其自身的定位。圖中可以看出FPGA極高的效能比
文中指出開發(fā)者希望數(shù)據(jù)中心有以下幾個(gè)特性:
1、高效能
2、完整的軟件開發(fā)環(huán)境
3、利于升級的設(shè)計(jì)
然而這些正是SDAccel所能帶給我們的,關(guān)于SDAccel有這樣一則新聞賽靈思推出針對OpenCL、 C和 C++的SDAccel開發(fā)環(huán)境。SDAccel設(shè)計(jì)思路如下圖,它強(qiáng)調(diào)的是“FPGA 上類似GPU/GPU的開發(fā)體驗(yàn)”。
背景資料中僅對SDAccel特性做了簡要說明。
開發(fā)體驗(yàn):CPU/GPU開發(fā)者可以通過重用或維護(hù)OpenCL,C,C++代碼輕易將應(yīng)用程序遷移到FPGA上。SDAccel報(bào)還一些基本的庫(OpenCL built-ins, DSP, Video, and linear algebra libraries),同時(shí)Auviz還提供了OpenCV和BLAS。程序調(diào)試成型之前并不需要FPGA參與,之后需要進(jìn)行RTL仿真
升級:SDAccel可以實(shí)現(xiàn)即時(shí)的硬件動態(tài)重配,F(xiàn)PGA硬件可復(fù)用,因此應(yīng)用可以平滑的升級。
性能和總結(jié):SDAccel生成的代碼在某些方面甚至超過了手工編寫的HDL code,和其他編譯器相比較更是有巨大優(yōu)勢。
背景資料中并沒有提供更多的信息,總結(jié)起來就是——Xilinx說他的產(chǎn)品很好。
4.其他
25倍說得很模糊,單詞用的是“表現(xiàn)”。本文的標(biāo)題取自Xilinx,如果從GFLOPs衡量的話,Xilinx官網(wǎng)給出了下面一個(gè)圖(高性能計(jì)算應(yīng)用)。圖中采用K10進(jìn)行對比,最新的K80在保持K10功耗下,計(jì)算能力大概變成了原來的兩倍。Virtex7差不多是最新的 FPGA(20nm),因此FPGA相對于GPU的優(yōu)勢并不明顯。
就僅有的資料而言,Xilinx對其作出了很多限制(譬如數(shù)據(jù)中心,功耗限制),無疑在這些方面FPGA有很大的優(yōu)勢。但前景到底如何呢?
評論