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