引言
數(shù)據(jù)中心運(yùn)維人員總是不斷在尋求更高的服務(wù)器性能。目前,他們主要是通過易于編程的多核 CPU 和 GPU 來開發(fā)應(yīng)用,但CPU 和 GPU 都遇到了單位功耗性能的瓶頸壁壘。從事海量數(shù)據(jù)中心應(yīng)用開發(fā)(如密鑰加速、圖像識(shí)別、語音轉(zhuǎn)錄、加密和文本搜索等)的設(shè)計(jì)人員既希望 GPU 易于編程,同時(shí)又希望硬件具有低功耗、高吞吐量和最低時(shí)延功能。然而,多核 CPU和 GPU 加速器在可擴(kuò)展性上存在嚴(yán)重的問題 : 客戶希望用簡(jiǎn)單的全高度插入式 PCIe 開發(fā)板作為數(shù)據(jù)中心服務(wù)器的應(yīng)用加速器。這種開發(fā)板經(jīng)配置可運(yùn)行高功率圖形卡,但客戶同時(shí)希望功耗不超過 25W,以便最大化可擴(kuò)展性并最小化總功耗。
最近賽靈思同瑞士蘇黎世聯(lián)邦理工學(xué)院(ETH Zurich)聯(lián)合開展的一系列研究發(fā)現(xiàn),基于 FPGA 的應(yīng)用加速想比 CPU/GPU實(shí)現(xiàn)方案,單位功耗性能可提升 25 倍,而時(shí)延則縮短了 50 到 75 倍,與此同時(shí)還能實(shí)現(xiàn)出色的 I/O 集成(PCIe、DDR4SDRAM 接口、高速以太網(wǎng)等) 。換言之,F(xiàn)PGA 能在單芯片上提供高能效硬件應(yīng)用加速所需的核心功能,并同時(shí)提供每個(gè)開發(fā)板目標(biāo)功耗低于 25W 的的解決方案。
中國網(wǎng)絡(luò)服務(wù)領(lǐng)先企業(yè)百度公司在美國加州圣何塞舉行的 2014 年熱門芯片研討會(huì)上介紹了支持性調(diào)查結(jié)果。百度的結(jié)論如下 :
• 中端 FPGA 能夠?qū)崿F(xiàn) 375 GFLOPS 的性能,功耗僅為 10-20W
• 基于 FPGA 的加速器可部署在所有類型的服務(wù)器中。
• 和 CPU 和 GPU 相比, FPGA 在深度神經(jīng)網(wǎng)絡(luò)(DNN)預(yù)測(cè)系統(tǒng)中性能更加出色。DNN系統(tǒng)用于語言識(shí)別、圖像搜索、OCR、面部識(shí)別、網(wǎng)頁搜索以及自然語言處理等各種不同應(yīng)用。
FPGA 用于應(yīng)用加速的最大問題在于編程。數(shù)據(jù)中心應(yīng)用開發(fā)人員不希望采用以硬件為中心的 RTL 流程,也就是傳統(tǒng) FPGA的開發(fā)路徑。他們所需要的是 :
• 單位功耗性能更高
• 完全軟件的開發(fā)環(huán)境
• 易于升級(jí)的設(shè)計(jì)
推出全新賽靈思 SDAccel 環(huán)境
全新的賽靈思 SDAccel 開發(fā)環(huán)境為數(shù)據(jù)中心應(yīng)用開發(fā)人員提供了他們所需要的完整的 FPGA 軟硬件解決方案。SDAccel 包括可高效利用片上 FPGA 資源的快速的、架構(gòu)優(yōu)化的編譯器 ; 熟悉的軟件開發(fā)流程——其帶有用于代碼開發(fā)、特性分析與調(diào)試的 Eclipse 集成設(shè)計(jì)環(huán)境(IDE) ,可提供類似于 CPU/GPU 的工作環(huán)境 ; 以及針對(duì)不同數(shù)據(jù)中心應(yīng)用而優(yōu)化的動(dòng)態(tài)可重配置加速器,能在類似 CPU/GPU 運(yùn)行時(shí)間環(huán)境中即時(shí)更換。運(yùn)行過程中應(yīng)用能讓不同處理模塊在 FPGA 中即時(shí)替換,且不會(huì)干擾服務(wù)器 CPU 和 FPGA 之間的連接,實(shí)現(xiàn)不間斷的應(yīng)用加速。
SDAccel 結(jié)合業(yè)界首款架構(gòu)優(yōu)化編譯器、庫和開發(fā)板,是唯一能在 FPGA 上提供類似于 CPU/GPU 的開發(fā)和運(yùn)行時(shí)間體驗(yàn)。SDAccel 開發(fā)環(huán)境面向基于 X86 服務(wù)器處理器的主機(jī)系統(tǒng),并可提供現(xiàn)成的商用(COTS)PCIe 插卡,用于添加FPGA 功能。
行業(yè)首款面向 C、C++ 和 OpenCL 的架構(gòu)優(yōu)化編譯器
SDAccel 的架構(gòu)優(yōu)化編譯器使軟件開發(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% 之多。
架構(gòu)優(yōu)化的 SDAccel 編譯器可以自動(dòng)對(duì)應(yīng)用源代碼實(shí)施一系列基礎(chǔ)甚至高級(jí)的優(yōu)化方案。下表列出了 SDAccel 編譯器針對(duì)加速應(yīng)用所進(jìn)行的一系列優(yōu)化。
其中一些自動(dòng)優(yōu)化能大幅提升整體應(yīng)用的效率。舉例來說,SDAccel 編譯器的數(shù)據(jù)流流水線功能可對(duì)多個(gè)功能進(jìn)行流水線化,而不會(huì)局限于僅能對(duì)單一功能進(jìn)行優(yōu)化。該編譯器的存儲(chǔ)器優(yōu)化功能能極大地提升功效,從而讓你能夠在 FPGA 中添加更多功能。SDAccel 是首款面向 FPGA 平臺(tái)的完全軟件的開發(fā)環(huán)境,可實(shí)現(xiàn)類似于 CPU/GPU 的開發(fā)體驗(yàn)。開發(fā)人員能用熟悉的工作流程優(yōu)化應(yīng)用,而且即便很少或者沒有 FPGA 使用經(jīng)驗(yàn),也能獲益于 FPGA 的平臺(tái)優(yōu)勢(shì)。集成設(shè)計(jì)環(huán)境(IDE)不僅可提供編碼模板和軟件庫,而且還支持在 x86 平臺(tái)上進(jìn)行編譯、調(diào)試、特性分析和 FPGA 仿真。準(zhǔn)備好部署后,IDE 能在配有自動(dòng)儀器插入功能的數(shù)據(jù)中心用現(xiàn)成的商用 FPGA 平臺(tái)上實(shí)現(xiàn)算法。
SDAccel 還經(jīng)過精心構(gòu)建,使 CPU/GPU 開發(fā)人員能夠輕松將其應(yīng)用移植到 FPGA 上,同時(shí)還可在熟悉的工作流程中維護(hù)和復(fù)用 OpenCL、C 和 C++ 代碼。大量代碼和庫采用 C 和 C++ 格式。對(duì)于希望采用其現(xiàn)有代碼庫中的不同代碼, 或者采用第三方代碼庫,甚至繼續(xù)組合使用 C、C++ 或 OpenCL 進(jìn)行開發(fā)的開發(fā)者來說,能用 C、C++ 或 OpenCL 工作是最大的便利。
SDAccel 環(huán)境配套提供面向程序員的 Eclipse IDE 以及一系列基于 C 語言的 FPGA 優(yōu)化庫和數(shù)據(jù)中心用現(xiàn)成商用平臺(tái)。
Convey Computer、Alpha Data Parallel Systems 和 Pico Computing 公司可提供數(shù)據(jù)中心用加速板卡。2015 年年初還將增加更多商用現(xiàn)貨(COTS)合作伙伴。SDAccel 庫包括內(nèi)置 OpenCL 函數(shù)、DSP、視頻和線性代數(shù)庫,能支持高性能低功耗實(shí)現(xiàn)方案。針對(duì)特定領(lǐng)域加速,賽靈思聯(lián)盟合作成員 Auviz Systems 公司還提供優(yōu)化的 OpenCV 和 BLAS SDAccel 兼容庫。
應(yīng)用開發(fā)人員完全能在 X86 仿真空間開始使用 SDAccel 使其代碼開始工作。一旦其確信其算法開發(fā)人員就能對(duì)代碼進(jìn)行特性分析,找到受益于加速的代碼片段。然后開發(fā)人員就可以利用這些有針對(duì)性的片段,無縫采用快速自動(dòng)生成的周期精確內(nèi)核仿真,從而實(shí)現(xiàn)加速。這些快速仿真可用來調(diào)試和優(yōu)化加速量,同時(shí)能在架構(gòu)層面工作。業(yè)經(jīng)驗(yàn)證的應(yīng)用能方便地移植到主機(jī) /FPGA 系統(tǒng)。SDAccel 開發(fā)環(huán)境可支持所有這些來自同一控制中心(cockpit)的活動(dòng)。
SDAccel 庫對(duì) SDAccel 類似 CPU/GPU 的開發(fā)體驗(yàn)發(fā)揮了重要作用。這些庫包含底層數(shù)學(xué)庫以及 BLAS、OpenCV 和 DSP 等高生產(chǎn)力庫。這些庫用 C++(而不是用 RTL)編寫,因此在所有開發(fā)和調(diào)試階段都能完全像編寫一樣使用。在項(xiàng)目早期階段,所有開發(fā)工作都在 CPU 主機(jī)上進(jìn)行。由于 SDAccel 庫用 C++ 語言編寫,因此能與 CPU 目標(biāo)的應(yīng)用代碼一起編譯,創(chuàng)建虛擬設(shè)計(jì)原型,讓所有測(cè)試、調(diào)試和初始特性分析工作在主機(jī)上進(jìn)行。在此階段無需 FPGA。
一旦應(yīng)用經(jīng)過初始調(diào)試和特性分析,需要硬件加速的關(guān)鍵功能可通過編譯實(shí)現(xiàn)協(xié)同仿真,加速功能運(yùn)行在基于 CPU 的 RTL仿真器上。這時(shí),軟件開發(fā)團(tuán)隊(duì)可觀察所得的性能,確定應(yīng)用能否滿足性能目標(biāo)要求。RTL 仿真能準(zhǔn)確給出 FPGA 硬件加速的性能情況,這就能讓開發(fā)團(tuán)隊(duì)得到很好的性能估算,而且能高度確保所得的 FPGA 配置能精確重現(xiàn)應(yīng)用源代碼的行為和結(jié)果。
加速功能隨后可遷移到 FPGA 上,生成最后的加速應(yīng)用,可用于部署。SDAccel 編譯器不是創(chuàng)建通用 FPGA 配置,而是在編譯時(shí)針對(duì)特定的賽靈思 FPGA,包括器件速度等級(jí),這樣所得的加速功能就能針對(duì) FPGA 上的可用資源以及器件時(shí)序進(jìn)行優(yōu)化。在這時(shí)我們甚至還能測(cè)試功能,這對(duì)性能不會(huì)造成影響,硬件開銷極低,而且還能在同樣熟悉的 SDAccel 開發(fā)環(huán)境中進(jìn)行更多后期特性分析,以便充分利用 FPGA 硬件,全面最大化應(yīng)用加速效果。
CPU 級(jí)特性分析能發(fā)現(xiàn)應(yīng)用瓶頸。協(xié)同仿真將告訴您這些瓶頸是否已經(jīng)被加速特定功能消除掉。在 FPGA 上對(duì)硬件加速功能進(jìn)行特性分析能實(shí)現(xiàn)更多優(yōu)化,進(jìn)一步優(yōu)化應(yīng)用代碼和加速功能。在任何時(shí)間以及各個(gè)階段中,SDAccel 編譯器都可選擇性地檢測(cè)應(yīng)用代碼,包括加速功能,這就意味著調(diào)試和特性分析能夠以相同方式進(jìn)行,而且無論開發(fā)工作進(jìn)入到哪個(gè)階段,都可用使用同一軟件開發(fā)工具。
在 FPGA 上首次帶來類似 CPU/GPU 的運(yùn)行時(shí)間和升級(jí)體驗(yàn)
SDAccel 可提供支持實(shí)時(shí)類似 CPU/GPU 運(yùn)行時(shí)間升級(jí)的唯一 FPGA 動(dòng)態(tài)可重配置加速器。SDAccel 對(duì)于 FPGA 解決方案的獨(dú)特之處在于其利用唯一的 FPGA 動(dòng)態(tài)重配置功能可在內(nèi)核升級(jí)時(shí)保持系統(tǒng)繼續(xù)運(yùn)行,這不僅可加載新的硬件加速器內(nèi)核(這一點(diǎn)與 CPU/GPU 加速器的功能類似) ,同時(shí)還能保持關(guān)鍵的系統(tǒng)接口和功能(如存儲(chǔ)器、以太網(wǎng)、PCIe 和性能監(jiān)控器)繼續(xù)發(fā)揮作用。這種即時(shí)的系統(tǒng)重配置功能理想適用于數(shù)據(jù)中心計(jì)算需求及負(fù)載的立即更新。這種應(yīng)用的一個(gè)實(shí)例就是圖像搜索、視頻轉(zhuǎn)碼和圖像處理等功能的即時(shí)切換,從而帶來戰(zhàn)略性優(yōu)勢(shì)。
所有這些都能通過硬件重用轉(zhuǎn)換為資源優(yōu)化,這在數(shù)據(jù)中心環(huán)境中是一大優(yōu)勢(shì)。簡(jiǎn)而言之,基于 SDAccel 的系統(tǒng)現(xiàn)在能加速應(yīng)用,而如果未來需要另外一種類型的加速,系統(tǒng)能快速順利地實(shí)現(xiàn)升級(jí)。
開發(fā)者可以管理和運(yùn)行基于 SDAccel 的系統(tǒng)就像在 CPU/GPU 系統(tǒng)一樣。利用 SDAccel 和硬件快速動(dòng)態(tài)重配置功能,我們甚至能在應(yīng)用運(yùn)行中重用 FPGA。這種功能使得我們能用相同的 FPGA 板卡執(zhí)行不同的內(nèi)核加速,硬件可針對(duì)不同的算法進(jìn)行重新優(yōu)化,且不會(huì)限制或中斷應(yīng)用流程。通過支持動(dòng)態(tài)重配置,SDAccel 能讓數(shù)據(jù)中心運(yùn)維人員最大限度地發(fā)揮硬件加速投資價(jià)值。實(shí)實(shí)在在的標(biāo)準(zhǔn)測(cè)試可證明 SDAccel 的性能和價(jià)值SDAccel 經(jīng)過了具有實(shí)際標(biāo)準(zhǔn)測(cè)試的業(yè)界驗(yàn)證。舉例來說,在壓縮標(biāo)準(zhǔn)測(cè)試中,SDAccel 生成的硬件加速器比同類競(jìng)爭(zhēng)工具生成的加速器速度高 3 倍多,尺寸小 3 倍。占位面積及吞吐量與手動(dòng)優(yōu)化的 RTL 實(shí)現(xiàn)方案旗鼓相當(dāng)甚至更優(yōu)秀。
在上述的加密標(biāo)準(zhǔn)測(cè)試中,SDAccel 生成的硬件加速器比同類競(jìng)爭(zhēng)工具生成的加速器速度快 1.2 倍,而面積小 4 倍。更棒的是,SDAccel 自動(dòng)生成的加速器比用 RTL 手動(dòng)編碼生成的加速器還快 20%。SDAccel 開箱即用,可直接編加速器,而且QOR(結(jié)果質(zhì)量)與手動(dòng)編碼結(jié)果質(zhì)量旗鼓相當(dāng),甚至更勝一籌。
結(jié)論
SDAccel 可滿足數(shù)據(jù)中心應(yīng)用開發(fā)人員的需求,包括提供類似 CPU/GPU 的工作環(huán)境,其生成的高效硬件加速器可實(shí)現(xiàn)最佳單位功耗性能,遠(yuǎn)勝于運(yùn)行在 CPU/GPU 上的加速器。SDAccel 通過帶有系統(tǒng)內(nèi)即時(shí)可重配置功能的單個(gè)控制中心環(huán)境(cockpit environment)支持軟件工作流程,最大化數(shù)據(jù)中心硬件加速投資回報(bào)。因此,SDAccel 是一種獨(dú)特而完整的 FPGA解決方案,其易用性和功能遠(yuǎn)超同類競(jìng)爭(zhēng)性工具。這些同類競(jìng)爭(zhēng)性工具不能提供高生產(chǎn)力工作流程,也不能提供熟悉的環(huán)境,加速器性能更不能與 SDAccel 自動(dòng)生成的硬件加速器相提并論。