SAP SE 開發(fā)人員當(dāng)前正在就基于云的壓縮即服務(wù) (CaaS) 創(chuàng)建概念驗證 (PoC)。他們選擇利用 FPGA 來加速這一計算密集型工作負(fù)載,并計劃使用 Garden Linux 操作系統(tǒng) (OS) 發(fā)行版在其高性能分析設(shè)備 (High Performance Analytics Appliance, HANA) 云上的 Docker 容器中運行相關(guān)工作負(fù)載。有了開放式 FPGA 堆棧 (OFS),開發(fā)人員就可以利用可擴(kuò)展、可訪問源代碼的軟硬件基礎(chǔ)設(shè)施,來簡化自定義板卡和工作負(fù)載的開發(fā)。OFS 提供的靈活性使他們能夠按照自己的首選配置開發(fā)概念驗證,其模塊化架構(gòu)則加快了他們的開發(fā)速度。
面向英特爾?Agilex FPGA 的 OFS 版本包含一個 Docker 映像文件,與容器配合使用可快速啟動開發(fā)。Docker 映像文件及用戶指南可從開源 OFS 存儲庫獲取。
背景
SAP SE 是一家總部位于巴登符騰堡州沃爾多夫鎮(zhèn)的德國跨國軟件公司,專注于開發(fā)企業(yè)運營和客戶關(guān)系管理的企業(yè)級軟件。
SAP HANA 是 SAP SE 開發(fā)和上市的關(guān)系數(shù)據(jù)庫管理系統(tǒng)。SAP HANA 的列數(shù)據(jù)采用字典編碼。字符串字典可能包含大量文本數(shù)據(jù),這些數(shù)據(jù)需通過壓縮來降低內(nèi)存需求。目前可用的壓縮算法有很多種,包括 LZ77、LZR、LZSS、LZMA、ZStandard 等,但這些算法常用于將大量信息壓縮到一個模塊中。如果以這種方式壓縮字典,就必須解壓縮整個文件才能訪問單個條目,這無論是從耗時、計算效率還是功耗來看都是非常不理想的。另一種方案是利用上述算法逐個壓縮字典條目,但由于這些算法沒有針對少量數(shù)據(jù)的壓縮進(jìn)行優(yōu)化,因此同樣很低效。
對于像字符串字典這類需要隨機(jī)訪問壓縮數(shù)據(jù)的應(yīng)用而言,Re-Pair 是一種非常合適的壓縮算法。美中不足的是,Re-Pair 屬于計算密集型算法且成本高昂。由于其在中央處理器 (CPU) 上實施壓縮和解壓縮的時間過長,因此并未在數(shù)據(jù)管理社區(qū)中得到廣泛應(yīng)用。不過,現(xiàn)場可編程門陣列 (FPGA) 的可編程邏輯結(jié)構(gòu)經(jīng)過配置后,可以大規(guī)模并行執(zhí)行算法處理。這意味著像 Re-Pair 這樣的算法藉此能夠以相對較低的功耗在 FPGA 上快速執(zhí)行。
SAP 使用的操作系統(tǒng) Garden Linux 是 Debian GNU/Linux 衍生版本,旨在提供小型、可審計的 Linux 映像,供云服務(wù)提供商 (CSP) 和裸機(jī)部署使用。Garden Linux 運行當(dāng)前的 LTS Linux 內(nèi)核,并可為前沿企業(yè)服務(wù)器硬件提供額外的驅(qū)動程序支持。該操作系統(tǒng)使用經(jīng)過測試的安全構(gòu)建模塊來構(gòu)建映像,功能靈活多樣,并且可根據(jù)不同的工作負(fù)載要求進(jìn)行定制。
這一過程中面臨的挑戰(zhàn)是如何利用 SAP HANA 云中的 Docker 容器針對 Re-Pair 壓縮工作負(fù)載部署進(jìn)行原型設(shè)計。這其中,SAP HANA 云采用的是 Garden Linux OS 以及基于高性能 PCI Express (PCIe) 的 FPGA 加速卡。由于容器包含運行應(yīng)用所需的一切,因此使用容器有助于初始部署,也可簡化應(yīng)用在服務(wù)器之間的遷移。
SAP 部署
首先,SAP 使用共享虛擬內(nèi)存 (SVM) 板級支持包 (BSP) 獲取獨立的英特爾?加速堆棧 2.0 (DCP2.0) OpenCL 壓縮工作負(fù)載,并將其移植到 OFS。該步驟易于操作,只需將新的通用共享內(nèi)存 (USM) BSP 與 OFS 堆棧一起使用即可重新編譯 FPGA 編程文件。主機(jī)代碼無需修改,只需用 OFS 庫重新編譯。
接下來,以 CentOS 7 為基礎(chǔ)映像編寫 Dockerfile,并在 Dockerfile 中實施以下步驟:
1 確保已安裝或已配置依賴項。 2 定義一組環(huán)境變量。 3 克隆 OFS Git 存儲庫。 4 建立 OPAE。 5 安裝面向 OpenCL 的英特爾?FPGA SDK v20.4。 6 設(shè)置額外的環(huán)境變量。 7 添加壓縮主機(jī)代碼和 FPGA 編程文件 *.aocx。 8 建立可執(zhí)行主機(jī)。 9 編寫運行腳本。
接著,用英特爾?FPGA 可編程加速卡(英特爾?FPGA PAC) D5005 設(shè)置服務(wù)器,設(shè)置過程需要使用 OFS 固件和 Garden Linux,其中 Garden Linux 已包含 OFS 設(shè)備功能列表 (DFL) 驅(qū)動程序。自 Garden Linux 5.15 版起,OFS DFL 驅(qū)動程序均包含在其內(nèi)核中,因此 SAP 無需單獨安裝 DFL 驅(qū)動程序。最后,將 Docker 容器部署到服務(wù)器上并啟動。
SAP 為什么使用英特爾?OFS?
基于英特爾?FPGA 的參考平臺既為 OFS 提供支持,也是其驗證平臺??蛻艉秃献骰锇榭衫眠@些平臺進(jìn)行應(yīng)用的評估和開發(fā),然后再將應(yīng)用移植到基于 OFS 的自定義或第三方量產(chǎn)板卡。?
在本案例中,SAP 開發(fā)人員希望以英特爾?FPGA PAC D5005 為部署平臺。英特爾?FPGA PAC D5005 是一款基于 PCI Express (PCIe) 的高性能 FPGA 加速卡,適用于數(shù)據(jù)中心。由于英特爾?Stratix?10 FPGA 的 OFS 參考平臺是英特爾?FPGA PAC D5005,因此 SAP 能夠在幾乎無需修改 FPGA 接口管理器 (FIM) 硬件或軟件的前提下,完成其容器化工作負(fù)載的部署。?
OFS 硬件由一個 FPGA 接口管理器 (FIM) 和一個加速功能單元 (AFU) 區(qū)域組成。有了 OFS,板卡 (FIM) 開發(fā)人員就可以利用提供的基礎(chǔ)設(shè)施(基礎(chǔ) FIM),根據(jù)目標(biāo)工作負(fù)載的接口和協(xié)議要求,為板卡快速創(chuàng)建個性化定制的 FIM。此外,AFU(工作負(fù)載)開發(fā)人員可以利用提供的 FIM 和 AFU 區(qū)域以及標(biāo)準(zhǔn)化的 Arm AMBA 4 AXI 接口(高級可擴(kuò)展接口),專注于創(chuàng)建自定義工作負(fù)載/AFU,且不必?fù)?dān)心 FPGA 通信設(shè)計的其余工作。??
同樣,借助 OFS 提供的軟件框架,開發(fā)人員可以利用上游和開源內(nèi)核驅(qū)動程序來加速與通用應(yīng)用框架的集成。?
SAP 開發(fā)人員利用提供的基礎(chǔ)設(shè)施和文檔可將相關(guān)的 Re-Pair 壓縮工作負(fù)載快速移植到英特爾?FPGA PAC D5005 上。能夠快速、輕松地生成概念驗證將有助于 SAP 規(guī)劃其在生產(chǎn)環(huán)境中部署基于 FPGA 的解決方案。
SAP 所用的 OFS 功能和特性
OFS 的推出使軟件、硬件和應(yīng)用開發(fā)人員能夠使用標(biāo)準(zhǔn)接口和應(yīng)用編程接口 (API) 來加速工作負(fù)載開發(fā)并實現(xiàn)代碼復(fù)用。?
OFS 還為不同的操作系統(tǒng)發(fā)行版本和部署模型(包括裸機(jī)、虛擬化和容器化模型)提供靈活性。在這種情況下,SAP 開發(fā)人員能夠利用 Docker 容器來部署工作負(fù)載。這是因為從 Garden Linux 5.15 版開始,其內(nèi)核都包含 OFS DFL FPGA 驅(qū)動程序。?
SAP 開發(fā)人員即使不具備精深的 FPGA 專業(yè)知識,也能利用 OFS 提供的 FIM 對 FPGA 進(jìn)行重新編程。得益于模塊化、易定制的架構(gòu),SAP 開發(fā)人員也可以快速輕松地對 FIM 進(jìn)行修改。?
此外,OFS 還提供兩種配置選擇,即扁平化設(shè)計和支持部分重配置 (PR) 的設(shè)計,使開發(fā)人員能夠充分利用 FPGA 的可重新編程性。部分重配置功能具有高度靈活性,它支持在設(shè)備運行時重新配置部分 FPGA——使整個基礎(chǔ)設(shè)施保持完整性及運行狀態(tài),藉此在不中斷整個系統(tǒng)的情況下更改配置。借助 OFS,SAP 開發(fā)人員能夠在 Docker 容器內(nèi)利用部分重配置功能進(jìn)行概念驗證。?
按照 OFS 部署流程,SAP 開發(fā)人員還可利用高級設(shè)計 (HLD) shim 組件,這種集成到 AFU 區(qū)域的組件,使 OpenCL 和 oneAPI 內(nèi)核能夠通過構(gòu)建正確的數(shù)據(jù)包協(xié)議與運行時軟件進(jìn)行通信。SAP 的壓縮即服務(wù)的初步概念驗證目前利用 OpenCL 來運行,SAP 計劃在未來的迭代中采用 oneAPI。同樣,雖然基于英特爾?Stratix?10 FPGA 的 PAC D5005 是初步概念驗證的開發(fā)平臺,但 SAP 已計劃在未來將其遷移到基于英特爾?Agilex FPGA 的加速卡。
總結(jié)
OFS 解決了在設(shè)計基于 FPGA 的加速平臺解決方案時可能面臨的多種挑戰(zhàn),使這些解決方案可用于基于英特爾?至強(qiáng)?處理器的服務(wù)器。OFS 使硬件、軟件和應(yīng)用的開發(fā)人員可以更輕松地創(chuàng)建自定義加速平臺和解決方案。?
OFS 提供標(biāo)準(zhǔn)接口和 API,可更好地支持代碼復(fù)用、加速開發(fā)和部署。例如,借助 OFS,開發(fā)人員可以輕松部署 Docker 容器等容器化工作負(fù)載。?
最終,通過利用 OFS 提供的基礎(chǔ)設(shè)施、源代碼和文檔以及基于 FPGA 的參考平臺,可以將開發(fā)時間縮短數(shù)月。
編輯:黃飛
?
評論
查看更多