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