可编程逻辑
SAP SE 开发人员当前正在就基于云的压缩即服务 (CaaS) 创建概念验证 (PoC)。他们选择利用 FPGA 来加速这一计算密集型工作负载,并计划使用 Garden Linux 操作系统 (OS) 发行版在其高性能分析设备 (High Performance Analytics Appliance, HANA) 云上的 Docker 容器中运行相关工作负载。有了开放式 FPGA 堆栈 (OFS),开发人员就可以利用可扩展、可访问源代码的软硬件基础设施,来简化自定义板卡和工作负载的开发。OFS 提供的灵活性使他们能够按照自己的首选配置开发概念验证,其模块化架构则加快了他们的开发速度。
面向英特尔 Agilex FPGA 的 OFS 版本包含一个 Docker 映像文件,与容器配合使用可快速启动开发。Docker 映像文件及用户指南可从开源 OFS 存储库获取。
背景
SAP SE 是一家总部位于巴登符腾堡州沃尔多夫镇的德国跨国软件公司,专注于开发企业运营和客户关系管理的企业级软件。
SAP HANA 是 SAP SE 开发和上市的关系数据库管理系统。SAP HANA 的列数据采用字典编码。字符串字典可能包含大量文本数据,这些数据需通过压缩来降低内存需求。目前可用的压缩算法有很多种,包括 LZ77、LZR、LZSS、LZMA、ZStandard 等,但这些算法常用于将大量信息压缩到一个模块中。如果以这种方式压缩字典,就必须解压缩整个文件才能访问单个条目,这无论是从耗时、计算效率还是功耗来看都是非常不理想的。另一种方案是利用上述算法逐个压缩字典条目,但由于这些算法没有针对少量数据的压缩进行优化,因此同样很低效。
对于像字符串字典这类需要随机访问压缩数据的应用而言,Re-Pair 是一种非常合适的压缩算法。美中不足的是,Re-Pair 属于计算密集型算法且成本高昂。由于其在中央处理器 (CPU) 上实施压缩和解压缩的时间过长,因此并未在数据管理社区中得到广泛应用。不过,现场可编程门阵列 (FPGA) 的可编程逻辑结构经过配置后,可以大规模并行执行算法处理。这意味着像 Re-Pair 这样的算法藉此能够以相对较低的功耗在 FPGA 上快速执行。
SAP 使用的操作系统 Garden Linux 是 Debian GNU/Linux 衍生版本,旨在提供小型、可审计的 Linux 映像,供云服务提供商 (CSP) 和裸机部署使用。Garden Linux 运行当前的 LTS Linux 内核,并可为前沿企业服务器硬件提供额外的驱动程序支持。该操作系统使用经过测试的安全构建模块来构建映像,功能灵活多样,并且可根据不同的工作负载要求进行定制。
这一过程中面临的挑战是如何利用 SAP HANA 云中的 Docker 容器针对 Re-Pair 压缩工作负载部署进行原型设计。这其中,SAP HANA 云采用的是 Garden Linux OS 以及基于高性能 PCI Express (PCIe) 的 FPGA 加速卡。由于容器包含运行应用所需的一切,因此使用容器有助于初始部署,也可简化应用在服务器之间的迁移。
SAP 部署
首先,SAP 使用共享虚拟内存 (SVM) 板级支持包 (BSP) 获取独立的英特尔 加速堆栈 2.0 (DCP2.0) OpenCL 压缩工作负载,并将其移植到 OFS。该步骤易于操作,只需将新的通用共享内存 (USM) BSP 与 OFS 堆栈一起使用即可重新编译 FPGA 编程文件。主机代码无需修改,只需用 OFS 库重新编译。
接下来,以 CentOS 7 为基础映像编写 Dockerfile,并在 Dockerfile 中实施以下步骤:
1 确保已安装或已配置依赖项。 2 定义一组环境变量。 3 克隆 OFS Git 存储库。 4 建立 OPAE。 5 安装面向 OpenCL 的英特尔 FPGA SDK v20.4。 6 设置额外的环境变量。 7 添加压缩主机代码和 FPGA 编程文件 *.aocx。 8 建立可执行主机。 9 编写运行脚本。
接着,用英特尔 FPGA 可编程加速卡(英特尔 FPGA PAC) D5005 设置服务器,设置过程需要使用 OFS 固件和 Garden Linux,其中 Garden Linux 已包含 OFS 设备功能列表 (DFL) 驱动程序。自 Garden Linux 5.15 版起,OFS DFL 驱动程序均包含在其内核中,因此 SAP 无需单独安装 DFL 驱动程序。最后,将 Docker 容器部署到服务器上并启动。
SAP 为什么使用英特尔 OFS?
基于英特尔 FPGA 的参考平台既为 OFS 提供支持,也是其验证平台。客户和合作伙伴可利用这些平台进行应用的评估和开发,然后再将应用移植到基于 OFS 的自定义或第三方量产板卡。
在本案例中,SAP 开发人员希望以英特尔 FPGA PAC D5005 为部署平台。英特尔 FPGA PAC D5005 是一款基于 PCI Express (PCIe) 的高性能 FPGA 加速卡,适用于数据中心。由于英特尔 Stratix 10 FPGA 的 OFS 参考平台是英特尔 FPGA PAC D5005,因此 SAP 能够在几乎无需修改 FPGA 接口管理器 (FIM) 硬件或软件的前提下,完成其容器化工作负载的部署。
OFS 硬件由一个 FPGA 接口管理器 (FIM) 和一个加速功能单元 (AFU) 区域组成。有了 OFS,板卡 (FIM) 开发人员就可以利用提供的基础设施(基础 FIM),根据目标工作负载的接口和协议要求,为板卡快速创建个性化定制的 FIM。此外,AFU(工作负载)开发人员可以利用提供的 FIM 和 AFU 区域以及标准化的 Arm AMBA 4 AXI 接口(高级可扩展接口),专注于创建自定义工作负载/AFU,且不必担心 FPGA 通信设计的其余工作。
同样,借助 OFS 提供的软件框架,开发人员可以利用上游和开源内核驱动程序来加速与通用应用框架的集成。
SAP 开发人员利用提供的基础设施和文档可将相关的 Re-Pair 压缩工作负载快速移植到英特尔 FPGA PAC D5005 上。能够快速、轻松地生成概念验证将有助于 SAP 规划其在生产环境中部署基于 FPGA 的解决方案。
SAP 所用的 OFS 功能和特性
OFS 的推出使软件、硬件和应用开发人员能够使用标准接口和应用编程接口 (API) 来加速工作负载开发并实现代码复用。
OFS 还为不同的操作系统发行版本和部署模型(包括裸机、虚拟化和容器化模型)提供灵活性。在这种情况下,SAP 开发人员能够利用 Docker 容器来部署工作负载。这是因为从 Garden Linux 5.15 版开始,其内核都包含 OFS DFL FPGA 驱动程序。
SAP 开发人员即使不具备精深的 FPGA 专业知识,也能利用 OFS 提供的 FIM 对 FPGA 进行重新编程。得益于模块化、易定制的架构,SAP 开发人员也可以快速轻松地对 FIM 进行修改。
此外,OFS 还提供两种配置选择,即扁平化设计和支持部分重配置 (PR) 的设计,使开发人员能够充分利用 FPGA 的可重新编程性。部分重配置功能具有高度灵活性,它支持在设备运行时重新配置部分 FPGA——使整个基础设施保持完整性及运行状态,藉此在不中断整个系统的情况下更改配置。借助 OFS,SAP 开发人员能够在 Docker 容器内利用部分重配置功能进行概念验证。
按照 OFS 部署流程,SAP 开发人员还可利用高级设计 (HLD) shim 组件,这种集成到 AFU 区域的组件,使 OpenCL 和 oneAPI 内核能够通过构建正确的数据包协议与运行时软件进行通信。SAP 的压缩即服务的初步概念验证目前利用 OpenCL 来运行,SAP 计划在未来的迭代中采用 oneAPI。同样,虽然基于英特尔 Stratix 10 FPGA 的 PAC D5005 是初步概念验证的开发平台,但 SAP 已计划在未来将其迁移到基于英特尔 Agilex FPGA 的加速卡。
总结
OFS 解决了在设计基于 FPGA 的加速平台解决方案时可能面临的多种挑战,使这些解决方案可用于基于英特尔 至强 处理器的服务器。OFS 使硬件、软件和应用的开发人员可以更轻松地创建自定义加速平台和解决方案。
OFS 提供标准接口和 API,可更好地支持代码复用、加速开发和部署。例如,借助 OFS,开发人员可以轻松部署 Docker 容器等容器化工作负载。
最终,通过利用 OFS 提供的基础设施、源代码和文档以及基于 FPGA 的参考平台,可以将开发时间缩短数月。
编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !