賽靈思SDAccel環境能在FPGA上提供類似CPU的開發與運行時間體驗,減輕數據中心設計負擔。 作者: Devadas Varma, 賽靈思公司SDAccel和Vivado高層次綜合事業部高級工程總監。 Dvarma@xilinx.com Tom Feist 賽靈思公司設計方法市場營銷部高級總監 Tfeist@xilinx.com 從支持中小機構運作的服務機房,到支持美國大型企業和提供云計算服務接入的企業級數據中心,數據中心在現代經濟中發揮著骨干作用。根據自然資源保護委員會的統計,數據中心是美國用電量最大、增長最快的用電大戶之一。2013年美國數據中心估計耗電約910億千瓦時,超過紐約市全部居民用電的兩倍以上,而且到2020年用電量有望達到1400億千瓦時[1]。很明顯,降低用電對于擴展數據中心,提升可靠性和降低運營成本具有重要意義。 根據具體的服務器應用,數據中心各個不同。許多服務器長期不間斷運行,使得硬件可靠性和耐用性極為重要。雖然服務器可以使用商用計算機部件組裝,但關鍵任務型企業級服務器往往使用以硬件加速為目的的專用硬件,如圖形處理單元(GPU)和數字信號處理器(DSP)。現在許多企業尋求使用現場可編程門陣列(FPGA),因為FPGA是一種高度并行的架構,而且功耗相對較低。賽靈思的新款SDAccelTM開發環境為開發人員提供了一種熟悉的CPU或類似CPU的環境,避免編程給FPGA在此類應用中使用時造成的障礙。 改善性能功耗比 Amazon Web服務、Google Compute、Microsoft Azure和中國的百度等公有云擁有巨大的圖片庫,需要極快的圖像識別能力。在一個實現方案中,谷歌科技人員將16,000個計算機處理器連接為一個實體,創建出了一個極為龐大的機器學習神經網絡,然后投放到互聯網上,讓其自主學習。這項研究是新一代計算機科學的代表。這一代計算機科學以充分利用大型數據中心中的大量計算機集群的運算能力為目標。潛在應用包括讓圖像搜索、語音識別和機器語言翻譯能力邁上新的臺階。但是對數據中心設計而言,僅依靠充分利用CPU并非是一種高能效的做法。要提高速度、降低功耗,還需要其他解決方案。 中國最大的搜索引擎百度借助于深度神經網絡處理技術來解決語音識別、圖像搜索和自然語言處理方面的問題。百度迅速判定,如果在在線預測中使用神經網絡反向傳播算法,FPGA解決方案在降低功耗的同時,還能以比CPU/GPU簡便得多的方式進行擴展[2]。 因在數據中心服務器的主機卡和線路卡中集成了FPGA,新一代28nm和20nm高集成度FPGA系列(如賽靈思7系列和UltraScaleTM器件)正在改變數據中心動態發展狀況。性能功耗比可以輕松達到CPU/GPU的20倍以上,同時在某些應用中與傳統CPU相比,時延可降低50至75倍。 但是對FPGA硬件資源有限或缺乏的開發團隊而言,由于需要使用RTL(VHDL或Verilog)開發專業知識才能充分發揮FPGA的性能優勢,因此過渡到FPGA難度較大。為解決這一問題,賽靈思已引入開放計算機語音(OpenCLTM)作為減輕編程負擔的方法。 OpenCL代碼移植性 由蘋果公司開發并經Khronos集團推廣的OpenCL [3]有助于異構設計中的CPU、GPU、FPGA和DSP模塊集成。為增強用于編寫可在異構平臺上運行的程序的OpenCL框架,賽靈思等業界領先的CPU、GPU和FPGA廠商都在為這種語音及其API的開發做出努力。 SDAccel編譯器相對CPU性能提高10倍,且功耗僅為GPU的1/10。 OpenCL被CPU/GPU/FPGA廠商、服務器OEM廠商以及數據中心管理人員等日益廣泛地接受,說明各方都已經認識到一個嚴峻的現實:用于單處理器架構的C語言編譯器在服務器機架內部只能實現小幅總體功耗降低,即便是在處理器采用低于20nm的工藝技術并添加特殊省電狀態后依然如此。 OpenCL是一種用于編寫可在由CPU、GPU、DSP、FPGA及其它處理器構成的異構平臺上運行的程序的框架。OpenCL包含基于C99的編程語言和應用編程接口(API),以控制平臺和在目標器件上執行程序。OpenCL使用基于任務和基于數據的并行機制提供并行計算功能。 針對OpenCL的賽靈思SDAccel開發環境 在開發特定領域規格描述環境方面,賽靈思有近十年的工作經驗。數據中心管理人員和服務器/交換機OEM廠商對數據中心性能的擔憂,迫使開發環境向統一環境方向縱向發展,以在數據中心應用中實現設計優化。在此情況下,一種用于應用加速的OpenCL開發環境—SDAccelTM—應運而生。 最新賽靈思SDAccel環境(如圖1所示)為數據中心應用開發人員提供完整的基于FPGA的硬件和OpenCL軟件。SDAccel內含一個快速且架構優化編譯器,能高效利用片上FPGA資源以及用于代碼開發、特性分析和調試的基于Eclipse集成設計環境(IDE)的熟悉軟件開發流程。該IDE可提供類似CPU/GPU的工作環境。 此外,SDAccel運用賽靈思的動態可重配置技術,可提供針對將即時換入換出的不同應用優化的加速器內核。這些應用能夠在運行時間內將多個內核換入或換出FPGA,且不會給服務器CPU和用于持續應用加速的FPGA之間的接口造成擾動。 ![]() 圖1 - SDAccel環境包含架構優化編譯器、庫、調試器和分析器,可提供類似CPU/GPU的編程體驗。 開發人員使用SDAccel的架構優化編譯器可優化和編譯流、低延遲定制數據路徑應用。SDAccel編譯器支持使用C、C++和OpenCL任意組合的源代碼,主要面向賽靈思高性能FPGA器件。SDAccel編譯器與高端CPU相比,性能提升10倍,功耗僅為GPU的1/10,同時保持代碼兼容性和傳統軟件編程模式,便于應用移植并有助于降低成本。 ![]() 圖2 – 運用OpenCL語言為CPU、GPU和FPGA架構編寫的視頻處理算法在FPGA上運行速度更快 (Auviz使用AuvizCV庫完成的基準測試) SDAccel是唯一基于FPGA的開發環境,內含各種用于應用加速并針對FPGA優化的庫。該庫包含OpenCL內置函數、任意精度數據類型(定點)、浮點、math.h、視頻、信號處理和線性代數函數。 在諸如帶有復雜嵌套數據路徑(nested datapath)的視頻處理等實際計算工作負載上,FPGA架構的內在靈活性使其相對于CPU和GPU固定架構而言,在性能和功耗方面具有明顯的優勢。如圖2中所示的基準測試結果表明,SDAccel編譯的FPGA解決方案在性能上超過相同代碼的CPU實現方案,并提供可與GPU實現方案相媲美的卓越性能。 雙邊濾波器和Harris角點檢測器均使用標準的OpenCL設計模式編碼,使用器件的全局存儲器在內核之間傳輸數據。SDAccel生成的FPGA實現方案通過創建片上存儲器組供高帶寬存儲器傳輸和低時延計算使用,可達到優化存儲器訪問的目的。創建和使用這些專用存儲器組代表SDAccel編譯器的部分架構感知功能。 軟件工作流 FPGA一直有望超越CPU和GPU實現方案,擁有更高的算法性能以及更低的功耗范圍。但直到現在因為編程模式,未能如愿以償。而這一編程模式又是有效利用FPGA所必須的。SDAccel支持具備系統內即時可重配置功能的軟件工作流,能最大化數據中心的硬件加速ROI,從而克服這一障礙。SDAcce是一種獨特而完整的基于FPGA的解決方案,他的功能和簡便易用性遠遠超遠競爭對手的工具。更多詳情,敬請訪問下列網站:http://china.xilinx.com/products/design-tools/sdx/sdaccel.html。 參考資料: 1. http://www.nrdc.org/energy/data-center-efficiency-assessment.asp 2. http://www.pcworld.com/article/2 ... cialized-chips.html 3. https://www.khronos.org/opencl |