Cyborg FPGA 驱动程序提案¶
https://blueprints.launchpad.net/openstack-cyborg/+spec/cyborg-fpga-driver
本文档提出为 Cyborg 提供 FPGA 驱动程序的初始设计。
问题描述¶
现场可编程门阵列 (FPGA) 是一种集成电路,设计为在制造后由客户或设计者进行配置。其优势在于,对于某些应用,由于其并行性和在特定过程中使用门数量方面的优化,它们有时会显著更快。因此,在云中使用 FPGA 进行应用加速变得越来越受欢迎。
Cyborg 中存在一个用于异构加速器的管理框架1,用于跟踪和部署 FPGA。本文档将为 Cyborg 添加一个 FPGA 驱动程序,以管理特定的 FPGA 设备。
用例¶
当 Cyborg agent 启动或定期进行资源检查时,Cyborg FPGA 驱动程序应枚举 FPGA 设备的列表,并报告主机上所有可用 FPGA 加速器的详细信息,例如 BDF(总线、设备、功能)、PID(产品 ID)VID(供应商 ID)、IMAGE_ID 以及 PF(物理功能)/VF(虚拟功能)类型。
当用户使用空的 FPGA 区域作为其加速器时,Cyborg agent 将调用驱动程序的 program() 接口。Cyborg agent 应向驱动程序提供 PF/VF 的 BDF 以及本地镜像路径。更多详细信息请参考 2。
当主机上或集群中的不同主机上可能存在多个供应商的 FPGA 卡时,Cyborg agent 可以通过 Cyborg FPGA 驱动程序轻松而智能地发现供应商,并调用正确的驱动程序来执行其操作,例如 discover() 和 program()。
提议的变更¶
总的来说,目标是开发一个支持 FPGA 加速器框架的 discover/program 接口的 Cyborg FPGA 驱动程序。
该驱动程序应包括以下函数:1. discover() 驱动程序报告设备如下
[{
"vendor": "0x8086",
"product": "bcc0",
"pr_num": 1,
"devices": "0000:be:00:0",
"path": "/sys/class/fpga/intel-fpga-dev.0",
"regions": [
{"vendor": "0x8086",
"product": "bcc1",
"regions": 1,
"devices": "0000:be:00:1",
"path": "/sys/class/fpga/intel-fpga-dev.1"
}]
}]
pr_num: partial reconfiguration region numbers.
program(device_path, image) 将镜像编程到由 device_path 指定的 PR 区域。device_path:加速器设备的 sys 路径。image:编程镜像的本地路径。
镜像格式¶
备选方案¶
无
数据模型影响¶
FPGA 驱动程序不会触及数据模型。Cyborg Agent 可以在 discover/program 操作期间调用 FPGA 驱动程序来更新数据库。
REST API 影响¶
相关的 FPGA 加速器 API 超出了本文档的范围。Cyborg 的 FPGA 管理框架1 将会修改该提案。
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
部署者应安装驱动程序所依赖的特定 FPGA 管理堆栈。
有关详细信息,请参阅 2。
开发者影响¶
对于开发人员而言,新的功能将带来一些影响。
实现¶
负责人¶
- 主要负责人
Shaohe Feng <shaohe.feng@intel.com> Dolpher Du <dolpher.du@intel.com>
工作项¶
实现本文档中的 cyborg-fpga-driver。
依赖项¶
Cyborg API 规范
Cyborg Agent 规范
Cyborg 驱动程序规范
Cyborg Conductor 规范
测试¶
将添加单元测试来测试 Cyborg FPGA 驱动程序。
将添加功能测试来测试 Cyborg FPGA 驱动程序。
文档影响¶
在 Cyborg 项目中记录 FPGA 驱动程序
参考资料¶
Cyborg API 规范
Cyborg Agent 规范
Cyborg 驱动程序规范
Cyborg Conductor 规范
历史记录¶
发布 |
描述 |
|---|---|
Queens |
引入 |