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