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