Cyborg Xilinx FPGA 驱动器提案

https://blueprints.launchpad.net/openstack-cyborg/+spec/add-xilinx-fpga-driver

本文档提出为 Cyborg 提供 Xilinx FPGA 驱动器的初始设计。

问题描述

我们希望使用 Cyborg 管理 Xilinx FPGA 设备,但目前没有相应的驱动程序。因此,我们希望添加 Xilinx FPGA 驱动程序,以支持 Cyborg 管理 Xilinx FPGA 设备。

用例

  • 作为操作员,我希望 Cyborg agent 能够周期性地启动或进行资源检查。Cyborg Xilinx FPGA 驱动程序应提供 discover() 函数来枚举 Xilinx FPGA 设备的列表,并报告主机上所有可用 Xilinx FPGA 加速器的详细信息,例如 PID(产品 ID)、VID(供应商 ID)和设备。

  • 作为用户,我希望启动一个带有 Xilinx FPGA 设备的虚拟机。Cyborg 应该能够管理这种类型的加速资源,将其分配给虚拟机(绑定)并对其进行编程。

提议的变更

Xilinx FPGA 是基于 PCIe 的平台,由物理分区组成,称为 Shell 和 User。Shell 具有两个物理功能:特权 PF0,也称为 mgmt pf,和非特权 PF1,也称为 user pf。Shell 为 Alveo 平台提供基本基础设施。用户分区(也称为 PR-Region)包含用户编译的二进制文件。[1]_

在安装 Xilinx 驱动程序 xrt 后才能显示用户 PF。并且用户 PF 和 mgmt PF 的 PCI 地址之间的区别在于 func 字段。例如,mgmt PF 的 PCI 地址为 ‘0000:3b:00.0’,而 user PF 的地址为 ‘0000:3b:00.1’。func 字段增加 1。因此,可以通过 mgmt PF 的地址计算 user PF 的 PCI 地址。此计算规则也适用于 ‘product’。

根据以上描述,Xilinx FPGA 驱动程序应实现以下方法

  • discover():此函数通过执行 lspci 命令来工作,并报告设备的原始信息样本如下

    [
      {
      "vendor": "10ee",
      "product": "5000",
      "device": "0000:3b:00.0"
      }
    ]
    

    在上面的示例中,“5000” 是 mgmt PF。因此,驱动程序应为每个设备添加三个特性,包括 “CUSTOM_FPGA_<VENDOR_ID>”、“CUSTOM_FPGA_PRODUCT_ID_<ID>”。此外,驱动程序应仅为该设备在 deployable 表中创建记录。目前,只有当 mgmt PF 和 user PF 都绑定到一个虚拟机时,最终用户才能编程 FPGA 设备。因此,绑定到虚拟机时有两个 attach handle。

  • program():此函数通过执行 xbmgmt program 命令来工作,该命令包含在 XRT 安装包中。[2]_ 此外,应在绑定到虚拟机之前调用此函数进行预编程。

下面是描述 FPGA 设备的对象的示例,符合 Cyborg 数据库模式和 Placement 数据模型。

Hardware     Driver objects       Placement data model
   |               |                      |
1 FPGA         1 devices                  |
   |               |                      |
   |         1 deployable       ---> resource_provider
   |               |            ---> parent resource_provider: compute node
   |               |                      |
1 FPGA       2 attach_handle    ---> inventories(total:1)

备选方案

数据模型影响

Xilinx FPGA 驱动程序不会触及数据模型。Cyborg Agent 可以在 discover、bind 和 unbind 操作期间调用 Xilinx FPGA 驱动程序来更新数据库。

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

  • 将新的驱动程序 xilinx_fpga_driver 添加到 agent 的 enabled_drivers 中。

开发者影响

实现

负责人

主要负责人

Eric Xie

工作项

  • 在 Cyborg 中实现 Xilinx FPGA 驱动程序

  • 添加相关的测试用例。

依赖项

测试

  • 将添加单元测试来测试此驱动程序。

文档影响

在 Cyborg 项目中记录 Xilinx FPGA 驱动程序。在 Cyborg wiki 中提供测试报告

参考资料

历史记录

修订版

发布

描述

瑜伽

引入