SDAccel開(kāi)發(fā)環(huán)境系統(tǒng)讓程序員也可以開(kāi)發(fā)令硬件工程師望而生畏的FPGA 作者 張國(guó)斌 猜猜以下三個(gè)場(chǎng)景和什么器件有關(guān)? 場(chǎng)景一、老王吃了一頓自認(rèn)為有史以來(lái)最好吃的涼皮,莫名亢奮的他用手機(jī)拍下涼皮的照片并分享到微信上。 場(chǎng)景二、遠(yuǎn)隔千里的老張看到了老王的微信,用ipad打開(kāi)看老王拍的照片 場(chǎng)景三、某互聯(lián)網(wǎng)公司開(kāi)發(fā)人員在思考春節(jié)的搶紅包的幾種玩法,并考慮如何去實(shí)現(xiàn)規(guī)則,但是他要考慮規(guī)則改變給服務(wù)器帶來(lái)的巨大負(fù)載。 這幾個(gè)場(chǎng)景和什么器件有關(guān)?首先,這些場(chǎng)景肯定都是服務(wù)器有關(guān)了,服務(wù)器里有什么?CPU? GPU? 恭喜你,答對(duì)了,傳統(tǒng)上,這些場(chǎng)景應(yīng)用都和CPU、GPU有關(guān)的。不過(guò)從現(xiàn)在乃至未來(lái),服務(wù)器將也將采用另外一個(gè)器件,它,就,是,F(xiàn)PGA! 為什么是FPGA? “由于移動(dòng)互聯(lián)的普及,帶來(lái)了圖片處理、搜素、轉(zhuǎn)化等方面需求的暴漲,數(shù)據(jù)中心的功耗壓力非常大,要在1U 2U的同等機(jī)架上用傳統(tǒng)處理維持同能功耗難度非常大,所以數(shù)據(jù)中心的開(kāi)發(fā)人員一直在尋找可以提升性能同時(shí)不增加功耗的辦法。現(xiàn)在這個(gè)方法終于找到了。”在近日賽靈思SDAccel開(kāi)發(fā)環(huán)境媒體發(fā)布會(huì)上,賽靈思亞太地區(qū)銷售與市場(chǎng)副總裁楊飛出,“賽靈思在近日召開(kāi)的2014國(guó)際超算大會(huì)(Super Computing 2014)上宣布推出針對(duì)OpenCL™、C和C++的SDAccel開(kāi)發(fā)環(huán)境SDAccel,將單位功耗性能提高達(dá)25倍,從而利用FPGA實(shí)現(xiàn)數(shù)據(jù)中心應(yīng)用加速。” ![]() 針對(duì)OpenCL™、C和C++的SDAccel開(kāi)發(fā)環(huán)境SDAccel 實(shí)際上,多年以來(lái),數(shù)據(jù)中心運(yùn)維人員一直在不斷尋求更高的服務(wù)器性能。目前,他們主要是通過(guò)易于編程的多核CPU和GPU來(lái)開(kāi)發(fā)應(yīng)用,但CPU和GPU都遇到了單位功耗性能的瓶頸壁壘。從事海量數(shù)據(jù)中心應(yīng)用開(kāi)發(fā)(如密鑰加速、圖像識(shí)別、語(yǔ)音轉(zhuǎn)錄、加密和文本搜索等)的設(shè)計(jì)人員既希望GPU易于編程,同時(shí)又希望硬件具有低功耗、高吞吐量和最低時(shí)延功能。然而,多核CPU和GPU加速器在可擴(kuò)展性上存在嚴(yán)重的問(wèn)題:客戶希望用簡(jiǎn)單的全高度插入式PCIe開(kāi)發(fā)板作為數(shù)據(jù)中心服務(wù)器的應(yīng)用加速器。這種開(kāi)發(fā)板經(jīng)配置可運(yùn)行高功率圖形卡,但客戶同時(shí)希望功耗不超過(guò)25W,以便最大化可擴(kuò)展性并最小化總功耗。 最近賽靈思同瑞士蘇黎世聯(lián)邦理工學(xué)院(ETH Zurich)聯(lián)合開(kāi)展的一系列研究發(fā)現(xiàn),基于FPGA的應(yīng)用加速想比CPU/GPU實(shí)現(xiàn)方案,單位功耗性能可提升25倍,而時(shí)延則縮短了50到75倍,與此同時(shí)還能實(shí)現(xiàn)出色的I/O集成(PCIe、DDR4 SDRAM接口、高速以太網(wǎng)等)。換言之,F(xiàn)PGA能在單芯片上提供高能效硬件應(yīng)用加速所需的核心功能,并同時(shí)提供每個(gè)開(kāi)發(fā)板目標(biāo)功耗低于25W的的解決方案。 ![]() 而中國(guó)BAT三巨頭之一的百度公司也是多年來(lái)在尋找更好的能效方案,對(duì)CPU、GPU和FPGA在數(shù)據(jù)中心的應(yīng)用進(jìn)行調(diào)查和對(duì)比,和在最近美國(guó)加州圣何塞舉行的2014年熱門(mén)芯片研討會(huì)上他們介紹了支持性調(diào)查結(jié)果。百度的結(jié)論如下: 1、中端FPGA能夠?qū)崿F(xiàn)375 GFLOPS的性能,功耗僅為10-20W 2、基于FPGA的加速器可部署在所有類型的服務(wù)器中。 3、和CPU和GPU相比, FPGA在深度神經(jīng)網(wǎng)絡(luò)(DNN)預(yù)測(cè)系統(tǒng)中性能更加出色。DNN系統(tǒng)用于語(yǔ)言識(shí)別、圖像搜索、OCR、面部識(shí)別、網(wǎng)頁(yè)搜索以及自然語(yǔ)言處理等各種不同應(yīng)用。 這是將賽靈思Kintex-7、Nvdia K10和英特爾至強(qiáng)處理器搜索對(duì)比:在多線程情況下,F(xiàn)PGA的優(yōu)勢(shì)非常明顯,在這個(gè)百度開(kāi)發(fā)的400Gflop軟件定義加速器中,它采用的賽靈思Kintex®-7 480t-2l PCI Express FPGA開(kāi)發(fā)板可以插入到任何類型的1U或2U服務(wù)器中。在不同工作負(fù)載下,百度發(fā)現(xiàn)Kintex 7 FPGA開(kāi)發(fā)板的性能均比GPU高出4倍,比CPU則高出9倍,同時(shí)在實(shí)際生產(chǎn)系統(tǒng)中功耗僅為10-20W。 不過(guò)百度指出應(yīng)用FPGA解決方案的一大壁壘就是開(kāi)發(fā)時(shí)間長(zhǎng),百度建議用好的工具解決這個(gè)問(wèn)題,這也是Xilinx SDAccel環(huán)境推出的主因之一。這個(gè)開(kāi)發(fā)環(huán)境可以讓系統(tǒng)開(kāi)發(fā)人員像開(kāi)發(fā)傳統(tǒng)CPUGPU一樣開(kāi)發(fā)FPGA。 數(shù)據(jù)中心如何用FPGA? 楊飛介紹說(shuō),將FPGA應(yīng)用的數(shù)據(jù)中心很簡(jiǎn)單,首先,將FPGA插入數(shù)據(jù)中心服務(wù)器PCIE插槽中,然后就可以利用賽靈思提供更多SDAccel環(huán)境進(jìn)行開(kāi)發(fā)就可以了。 ![]() ![]() SDAccel配套提供編程器用Eclipse IDE以及一系列基于C語(yǔ)言的FPGA優(yōu)化庫(kù)和數(shù)據(jù)中心用現(xiàn)成商用平臺(tái)。現(xiàn)在已經(jīng)有Convey Computer、Alpha Data Parallel Systems和Pico Computing等公司可提供數(shù)據(jù)中心用加速板卡,2015年年初還將增加更多商用現(xiàn)貨(COTS)合作伙伴。 SDAccel庫(kù)包括內(nèi)置OpenCL函數(shù)、DSP、視頻和線性代數(shù)庫(kù),能支持高性能低功耗實(shí)現(xiàn)方案。針對(duì)特定領(lǐng)域加速,賽靈思聯(lián)盟合作成員Auviz Systems公司還提供優(yōu)化的 OpenCV和BLAS SDAccel兼容庫(kù)。 應(yīng)用開(kāi)發(fā)人員完全能在X86仿真空間下開(kāi)始使用SDAccel使其代碼開(kāi)始工作。一旦其確信其算法開(kāi)發(fā)人員就能對(duì)代碼進(jìn)行特性分析,找到受益于加速的代碼片段。然后開(kāi)發(fā)人員就可以利用這些有針對(duì)性的片段,無(wú)縫采用快速自動(dòng)生成的周期精確內(nèi)核仿真,從而實(shí)現(xiàn)加速。這些快速仿真可用來(lái)調(diào)試和優(yōu)化加速量,同時(shí)能在架構(gòu)層面工作。業(yè)經(jīng)驗(yàn)證的應(yīng)用能方便地移植到主機(jī)/FPGA系統(tǒng)。SDAccel開(kāi)發(fā)環(huán)境可支持所有這些來(lái)自同一控制中心(cockpit)的活動(dòng)。 一旦應(yīng)用經(jīng)過(guò)初始調(diào)試和特性分析,需要硬件加速的關(guān)鍵功能可通過(guò)編譯實(shí)現(xiàn)協(xié)同仿真,加速功能運(yùn)行在基于CPU的RTL仿真器上。這時(shí),軟件開(kāi)發(fā)團(tuán)隊(duì)可觀察所得的性能,確定應(yīng)用能否滿足性能目標(biāo)要求。RTL仿真能準(zhǔn)確給出FPGA硬件加速的性能情況,這就能讓開(kāi)發(fā)團(tuán)隊(duì)得到很好的性能估算,而且能高度確保所得的FPGA配置能精確重現(xiàn)應(yīng)用源代碼的行為和結(jié)果。 楊飛介紹說(shuō),以前軟件開(kāi)發(fā)人員在開(kāi)發(fā)新的功能的時(shí)候,需要硬件人員在硬件上進(jìn)行協(xié)調(diào),現(xiàn)在,他們可以直接用FPGA進(jìn)行加速。“這是第一個(gè)在FPGA上提供完全類似CPU/GPU的運(yùn)行時(shí)間體驗(yàn)的開(kāi)發(fā)環(huán)境”他強(qiáng)調(diào),“我們目前主要針對(duì)以X86為主的服務(wù)器架構(gòu)。” 性能表現(xiàn)突出 楊飛表示SDAccel的架構(gòu)優(yōu)化編譯器使軟件開(kāi)發(fā)者能夠優(yōu)化并編譯流媒體、低時(shí)延以及定制數(shù)據(jù)路徑應(yīng)用。SDAccel編譯器主要針對(duì)高性能賽靈思FPGA并支持OpenCL,C 和C++任意組合的源代碼。 SDAccel編譯器相比高端CPU性能提高達(dá)10倍,而功耗僅為GPU的1/10,同時(shí)能保持代碼的兼容性和一個(gè)傳統(tǒng)的軟件編程模式,以便于應(yīng)用移植并節(jié)約成本。根據(jù)客戶基準(zhǔn),SDAccel編譯器相比同類競(jìng)爭(zhēng)FPGA解決方案,性能和資源效率均提升了3倍。SDAccel編譯器自動(dòng)生成的設(shè)計(jì)甚至比手動(dòng)編碼的RTL設(shè)計(jì)方案的性能還高,在某些情況下可高出20%之多。 SDAccel編譯器可以自動(dòng)對(duì)應(yīng)用源代碼實(shí)施一系列基礎(chǔ)甚至高級(jí)的優(yōu)化方案。下表列出了SDAccel編譯器針對(duì)加速應(yīng)用所進(jìn)行的一系列優(yōu)化。
SDAccel編譯器針對(duì)加速應(yīng)用所進(jìn)行的一系列優(yōu)化。 楊飛表示SDAccel采用的是已被1,000多名程序員廣泛使用的基礎(chǔ)編譯器技術(shù)。SDAccel充分利用該編譯器的功能,使軟件開(kāi)發(fā)人員能夠利用新的或現(xiàn)有的OpenCL、C和C++ 代碼創(chuàng)建高性能加速器,并針對(duì)計(jì)算搜索、圖像識(shí)別、機(jī)器學(xué)習(xí)、編碼轉(zhuǎn)換、存儲(chǔ)壓縮和加密等各種數(shù)據(jù)中心應(yīng)用中的存儲(chǔ)器、數(shù)據(jù)流和流水線技術(shù)進(jìn)行了精心優(yōu)化。 楊飛表示,即使SDAccel與市場(chǎng)同類FPGA對(duì)比,效果也很突出,“這是因?yàn)槲覀儗iT(mén)針對(duì)FPGA開(kāi)發(fā)的高層次綜合工具,所以即使用同樣的open CL語(yǔ)言,我們的效果也很突出。”如下圖所示,用SDAccel開(kāi)發(fā)環(huán)境開(kāi)發(fā)的FPGA應(yīng)用,其面積竟然比手動(dòng)編寫(xiě)的代碼還要好。 ![]() 所以,有好的FPGA,還需要有好的開(kāi)發(fā)工具,才能將其特性發(fā)揮出來(lái),如下圖所示,“用SDAccel開(kāi)發(fā)環(huán)境讓賽靈思FPGA在單位功耗性能和開(kāi)發(fā)簡(jiǎn)便性方便實(shí)現(xiàn)了魚(yú)與熊掌兼得的效果。”楊飛強(qiáng)調(diào)。“我們估計(jì)一個(gè)FPGA板卡相當(dāng)于四個(gè)傳統(tǒng)服務(wù)器。” ![]() 在單位功耗性能和開(kāi)發(fā)簡(jiǎn)便性方便實(shí)現(xiàn)了魚(yú)與熊掌兼得 實(shí)際上,不僅是數(shù)據(jù)中心可以應(yīng)用SDAccel開(kāi)發(fā)環(huán)境,其他一些應(yīng)用如工業(yè)、物流、醫(yī)療等與大數(shù)據(jù)處理相關(guān)的應(yīng)用都可以應(yīng)用到這個(gè)工具,楊飛表示隨著高級(jí)工藝的采用,F(xiàn)PGA已經(jīng)變得日益強(qiáng)大,賽靈思現(xiàn)在一個(gè)重點(diǎn)是降低FPGA的開(kāi)發(fā)門(mén)檻,用以高級(jí)抽象工具拓展FPGA的用戶群,賽靈思會(huì)推動(dòng)以軟件定義為主的產(chǎn)品系列,自今年5月推出SDNet軟件定義規(guī)范環(huán)境后,現(xiàn)在又推出了SDAccel開(kāi)發(fā)環(huán)境,未來(lái)還會(huì)推出更多SDX開(kāi)發(fā)環(huán)境,目前SDAccel已經(jīng)可以供貨,了解更多信息請(qǐng)點(diǎn)擊這里 china.xilinx.com/sdaccel 。 這里有個(gè)視頻介紹了SDAccel開(kāi)發(fā)環(huán)境 |