AWS F1正式上線,深度解析FPGA與公有雲的親密接觸
本文版權所有,轉載請聯繫知乎專欄[微陣]作者jonsonxp
1. 背景
歷經近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還為FPGA開發了新的鏡像格式,稱為AFI(Amazon FPGA Image)。AFI是AWS統一管理加速器鏡像的一種核心機制。用戶可使用aws ec2 create-fpga-image命令將編譯好的加速器註冊為AWS AFI,然後可在任意F1實例上使用AFI Management Tools部署執行。AFI是F1實例上對FPGA編程的唯一方式,從安全和管理角度考慮,Amazon目前沒有今後應該也不會提供直接下載Bitstream到FPGA的介面。
這樣,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-0123456789abcdefgn
目前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也比較樸素,互聯網和晶元產業的初次親密接觸還會有一個不短的磨合期。未來可期,只要方向對,技術能解決的問題都不是問題。推薦閱讀:
※答讀者問:網吧怎麼用MATLAB?
※開啟新征程 金蝶全力向雲轉型只是個偽命題
※[HotNets 16'] FreeFlow: High Performance Container Networking
※承諾百分百可靠?你一定是遇到了假雲計算!
※為什麼說華為的雲計算業務必將成功?
TAG:现场可编辑逻辑门阵列FPGA | 云计算 | 异构计算 |