歷經(jīng)近5個(gè)月的邀請(qǐng)內(nèi)測(cè),Amazon AWS于4月20日宣布FPGA EC2實(shí)例F1正式上線。就在F1內(nèi)測(cè)公布后這短短幾個(gè)月時(shí)間,國(guó)內(nèi)互聯(lián)網(wǎng)巨頭BAT加華為紛紛借勢(shì)宣布開(kāi)展FPGA云加速器業(yè)務(wù),這一波異構(gòu)計(jì)算之風(fēng)勢(shì)頭之猛可見(jiàn)一斑。
其實(shí),F(xiàn)PGA以其高能效和可重編程的優(yōu)勢(shì),在大型互聯(lián)網(wǎng)企業(yè)內(nèi)部早有應(yīng)用并逐漸成為常態(tài)。例如媒體壓縮,加解密,AI,大數(shù)據(jù)處理等領(lǐng)域,F(xiàn)PGA方案較傳統(tǒng)CPU和GPGPU,往往可達(dá)到幾倍甚至幾十倍的能效提升。然而過(guò)高的開(kāi)發(fā)門(mén)檻和開(kāi)發(fā)成本,卻讓中小型企業(yè)對(duì)FPGA技術(shù)可望而不可及。即便是大企業(yè),力量也只夠集中開(kāi)發(fā)有數(shù)的幾種加速器難以全面鋪開(kāi)。
FPGA結(jié)合云計(jì)算形成新的FPGA-as-a-Service或者Accelerator-as-a-Service平臺(tái),則可以整合多方資源解決上述問(wèn)題。平臺(tái)廠商與FPGA硬件廠商合作,在云端提供統(tǒng)一硬件平臺(tái)與中間件,可大大降低加速器的開(kāi)發(fā)與部署成本。加速器開(kāi)發(fā)商的加速器上傳到云,可以形成服務(wù)銷售給加速器用戶,消除加速技術(shù)與最終用戶的硬件壁壘。而加速器用戶則能夠在無(wú)需了解底層硬件的情況下,直接按需購(gòu)買和使用加速服務(wù),較傳統(tǒng)方案更快更省地完成數(shù)據(jù)處理。
FPGA云服務(wù)作為一種面向未來(lái)的全新平臺(tái),橫跨互聯(lián)網(wǎng)與芯片設(shè)計(jì)領(lǐng)域,相信對(duì)任何人都是新鮮和陌生的。本文就為大家介紹一下AWS F1的結(jié)構(gòu)特征以及具體的開(kāi)發(fā)部署方式。
2. AWS F1實(shí)例
2.1 硬件
AWS F1使用的是Xilinx最新一代UltraScale+架構(gòu)的高配FPGA VU9P,并提供上圖所示的兩種EC2實(shí)例。兩種實(shí)例都屬于高配機(jī)型,雖然較其他EC2服務(wù)器每小時(shí)單價(jià)貴出不少,考慮到Xilinx官方VU9P開(kāi)發(fā)版VCU118 $6,995的高價(jià),單FPGA實(shí)例$1.65/hr的定價(jià)還是非常公道和容易接受的。$1.65/hr就可以用上高端FPGA,這也降低了科研和個(gè)人開(kāi)發(fā)者的使用門(mén)檻。
不過(guò)需要注意的是,這兩個(gè)實(shí)例都使用了大容量SSD,SSD存儲(chǔ)要另行計(jì)費(fèi)。再就是FPGA開(kāi)發(fā)編譯時(shí)間較長(zhǎng)(F1的Hello world約4小時(shí)。。。),可以選擇便宜的非FPGA實(shí)例編譯,或者選擇本地編譯。
2.2 軟件
AWS傳統(tǒng)服務(wù)器是配套AMI(Amazon Machine Image)使用,AMI是預(yù)裝操作系統(tǒng)與服務(wù)的服務(wù)器硬盤(pán)鏡像。AWS為F1開(kāi)發(fā)與部署提供了FPGA Developer AMI,其中預(yù)裝了免費(fèi)授權(quán)Xilinx Vivado和SDx開(kāi)發(fā)軟件,以及管理FPGA必要的軟件和驅(qū)動(dòng)。預(yù)裝開(kāi)發(fā)環(huán)境的AMI即開(kāi)即用非常簡(jiǎn)便,但動(dòng)輒幾小時(shí)的編譯時(shí)間也增加了開(kāi)銷。為了讓開(kāi)發(fā)者可以本地編譯,Xilinx專門(mén)為Amazon F1提供了免費(fèi)的使用授權(quán)(詳見(jiàn):Xilinx Vivado Design Suite for Public Cloud),如下圖所示,免費(fèi)項(xiàng)目包括Vivado System Edition (限VU9P)、Partial Reconfiguration、SDAccel等曾經(jīng)非常昂貴的開(kāi)發(fā)軟件,可見(jiàn)兩家企業(yè)在云計(jì)算上的合作力度相當(dāng)之大。
AWS傳統(tǒng)服務(wù)器是配套AMI(Amazon Machine Image)使用,AMI是預(yù)裝操作系統(tǒng)與服務(wù)的服務(wù)器硬盤(pán)鏡像。AWS為F1開(kāi)發(fā)與部署提供了FPGA Developer AMI,其中預(yù)裝了免費(fèi)授權(quán)Xilinx Vivado和SDx開(kāi)發(fā)軟件,以及管理FPGA必要的軟件和驅(qū)動(dòng)。預(yù)裝開(kāi)發(fā)環(huán)境的AMI即開(kāi)即用非常簡(jiǎn)便,但動(dòng)輒幾小時(shí)的編譯時(shí)間也增加了開(kāi)銷。為了讓開(kāi)發(fā)者可以本地編譯,Xilinx專門(mén)為Amazon F1提供了免費(fèi)的使用授權(quán)(詳見(jiàn):Xilinx Vivado Design Suite for Public Cloud),如下圖所示,免費(fèi)項(xiàng)目包括Vivado System Edition (限VU9P)、Partial Reconfiguration、SDAccel等曾經(jīng)非常昂貴的開(kāi)發(fā)軟件,可見(jiàn)兩家企業(yè)在云計(jì)算上的合作力度相當(dāng)之大。
這樣,AMI定義虛擬機(jī)系統(tǒng)鏡像,AFI定義FPGA加速器鏡像,兩者合起來(lái)就能配置一臺(tái)完整的帶FPGA加速的服務(wù)器。加速器開(kāi)發(fā)商可以將加速器AFI,或者AMI+AFI發(fā)布到AWS Marketplace進(jìn)行銷售。而加速器用戶只需使用傳統(tǒng)的EC2流程即可購(gòu)買開(kāi)啟FPGA加速實(shí)例。
3. 開(kāi)發(fā)與部署
3.1 HDK與SDK
一個(gè)完整的FPGA加速項(xiàng)目涉及到軟件開(kāi)發(fā)和硬件開(kāi)發(fā)。軟件開(kāi)發(fā)環(huán)境通常稱為SDK,相對(duì)應(yīng)的,AWS提供了HDK(Hardware Development Kit)來(lái)支持F1 FPGA上的客戶邏輯設(shè)計(jì)。HDK中包含一個(gè)Shell邏輯層,提供了PCIe、DDR控制、時(shí)鐘控制等通用服務(wù)邏輯。HDK還提供了一些自動(dòng)化腳本幫助客戶編譯加速器,并打包成可以注冊(cè)AFI的tar格式。
F1的SDK提供了實(shí)用的FPGA部署工具。部署工具就是上面提到過(guò)的AFI Managment Tools, 使用這些程序可以查看、加載、清除FPGA上的客戶邏輯,也可以啟動(dòng)AWS開(kāi)發(fā)的虛擬JTAG服務(wù)用于遠(yuǎn)程調(diào)試。
目前HDK和SDK帶有兩個(gè)簡(jiǎn)單實(shí)例的軟硬件代碼,CL_HELLO_WORLD和CL_DRAM_DMA,他們各自使用到的功能特性列在下表。開(kāi)發(fā)者可以參照例程,快速開(kāi)始開(kāi)發(fā)自己的加速應(yīng)用。
3.2 開(kāi)發(fā)流程
上圖是知乎專欄[微陣]作者jonsonxp總結(jié)的當(dāng)前F1客戶邏輯(CL)的開(kāi)發(fā)流程。
加速器開(kāi)發(fā)者提供CL源代碼(e.g. Verilog, VHDL, SystemVerilog),為了保護(hù)客戶的設(shè)計(jì)資產(chǎn),首先必須使用IEEE P1735(詳見(jiàn)Xilinx手冊(cè)UG1118)對(duì)源代碼進(jìn)行加密處理。加密選項(xiàng)可同時(shí)保護(hù)源碼和最終生成的DCP文件。未經(jīng)加密生成的DCP在生成AFI時(shí)會(huì)報(bào)錯(cuò)失敗。
加密后的CL源碼經(jīng)過(guò)邏輯綜合,再和HDK中的Shell邏輯組合形成完整的FPGA設(shè)計(jì),就可以按照正常的Vivado設(shè)計(jì)流程進(jìn)行布局布線以及物理優(yōu)化。最終我們要提交到AWS的文件不是通常的Bitstream,而是布局后的DCP和一個(gè)描述設(shè)計(jì)的manifest.txt文件。這兩個(gè)文件打包成tar上傳到開(kāi)發(fā)中的AWS S3云存儲(chǔ),就可以調(diào)用AWS CLI的aws ec2 create-fpga-image命令將加速器注冊(cè)為可在任意F1實(shí)例上部署的AFI。由于F1 HDK中提供了完整的樣例和自動(dòng)化腳本,基本上開(kāi)發(fā)者只要準(zhǔn)備好源文件,剩下的工作都可以自動(dòng)完成。
事實(shí)上,整個(gè)開(kāi)發(fā)流程只有三個(gè)必要條件,一是使用AWS的官方Shell進(jìn)行開(kāi)發(fā),二是CL必須加密,三是生成合法DCP以及提供正確的Manifest.txt。開(kāi)發(fā)過(guò)程和客戶邏輯上幾乎沒(méi)有過(guò)多的限制,這對(duì)開(kāi)發(fā)者是非常友好的。相比其他一些正在進(jìn)行的FPGA云方案,他們基于安全原因或者管理系統(tǒng)不成熟,大多只對(duì)客戶暴露OpenCL開(kāi)發(fā)界面,這對(duì)源碼保護(hù)和硬件開(kāi)發(fā)的自由度都有影響。
3.3 加速器部署
加速器注冊(cè)為AFI后,AWS會(huì)返回一個(gè)AGFI(Amazon Global FPGA Image ID)用于部署。在F1實(shí)例上為FPGA加載加速器也非常容易,如下面命令所示,該命令將AGFI為agfi-0123456789abcdefg的加速器加載到本地服務(wù)器PCIe Slot 0上的FPGA。
$ sudo fpga-load-local-image -S 0 -I agfi-0123456789abcdefg
目前AGFI部署加速器好像還沒(méi)有權(quán)限管理,任何人只要知道加速器的AGFI就可以隨意使用,存在一定安全問(wèn)題。再者,AWS F1目前支持(虛擬)服務(wù)器級(jí)別部署,沒(méi)有FPGA虛擬化功能來(lái)支持單FPGA加載多加速器,如果使用虛擬化技術(shù)可以進(jìn)一步提高FPGA的使用率并降低部署成本。不過(guò)F1剛剛起步,相信一切都在完善之中。
4. 結(jié)語(yǔ)
傳統(tǒng)基于CPU的單一架構(gòu)云服務(wù)經(jīng)過(guò)多年粗放發(fā)展,逐漸難以維持快速增長(zhǎng)的計(jì)算需求。在云端使用FPGA開(kāi)發(fā)高能效定制硬件,從而降低計(jì)算成本已成大勢(shì)所趨。趨勢(shì)之下,先行者微軟的Catapult 1代和2代給我們展示了成功的應(yīng)用場(chǎng)景,但微軟并沒(méi)有將技術(shù)開(kāi)放出來(lái),普通開(kāi)發(fā)者可見(jiàn)而不可得。而Amazon的AWS F1依托多年開(kāi)發(fā)完善的AWS云平臺(tái)體系,從AMI擴(kuò)展出AFI,從SDK擴(kuò)展出HDK,非常平滑地將傳統(tǒng)云資源管理,擴(kuò)展為可以支持FPGA加速器的服務(wù)器管理系統(tǒng),并圍繞加速器開(kāi)發(fā)者和加速器用戶建立起云平臺(tái),才是將FPGA技術(shù)帶入主流互聯(lián)網(wǎng)市場(chǎng)的重要一步。我們也看到,當(dāng)前F1應(yīng)用實(shí)例還不多,管理工具以及HDK和SDK也比較樸素,互聯(lián)網(wǎng)和芯片產(chǎn)業(yè)的初次親密接觸還會(huì)有一個(gè)不短的磨合期。未來(lái)可期,只要方向?qū)?,技術(shù)能解決的問(wèn)題都不是問(wèn)題。
-
FPGA
+關(guān)注
關(guān)注
1629文章
21729瀏覽量
602977 -
公有云
+關(guān)注
關(guān)注
1文章
95瀏覽量
17411
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論