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.
  1. 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 规范

1(1,2)

https://blueprints.launchpad.net/openstack-cyborg/+spec/cyborg-fpga-modelling

2(1,2)

https://01.org/OPAE

历史记录

修订

发布

描述

Queens

引入