新型 Cyborg 通用驱动程序提案

本规范旨在提供 Cyborg 通用设备驱动程序的初始设计。

问题描述

目前,Cyborg 已经支持 FPGA 和 GPU,但尚未支持通用加速器的能力。

通常,这些通用设备是在特定场景下的专用加速器。例如

  • AI 芯片,可用于 AI 训练和推理。

  • 安全加速器,可用于加密和解密。

为了添加对这些专用加速器的支持,我们建议改进通用驱动程序以管理这些设备。我们建议改进现有的 GenericDriver。

用例

  • 作为 AI 芯片供应商,我想在 Cyborg 中添加驱动程序,但现有的驱动程序类型不符合我们的要求。我们希望驱动程序能够提供固件升级、设备配置和设备状态查询功能。

  • 作为安全加速器供应商,我想在 Cyborg 中添加带有安全加速器配置和设备状态查询的驱动程序

提议的变更

1. 通用驱动程序变更 作为初始版本,新的 GenericDriver 应包含以下属性

  • VENDOR:驱动程序的供应商名称。

  • TYPE:驱动程序的类型,例如,“FPGA”、“GPU”。

并且应包含以下接口

  • discover() 发现特定的加速器

  • update(control_path, image_path):使用特定的镜像升级设备固件。control_path:设备的镜像更新控制路径。image_path:固件二进制文件的路径,镜像将由 Cyborg agent 下载。

  • get_stats():收集设备状态。 get_stats 方法用于从设备收集有关设备能力的信息。例如性能信息,如温度、功率、电压、数据包计数信息。get_stats 的响应应遵循当前的 Cyborg 设备部署加速器模型。

    一个真实的 stats 示例如下

    {
      "device": {
        "device_name": "XXX",                 # Standard properties
        "device_number": "RFD1644N48373",     # Standard properties
        "properties": {                       # Vendor/Custom properties
          "id": "1",
          "temperature": "26",
          "volt": "",
          "packet_count": "",
          "memeory": {
            "model": "DDR4",
            "description": ""
          },
          "board": {
    
          },
          "flash": {
    
          }
        }
        "deploy": [
            {
              "accelerator": {
                 "acc_name": "",               # Standard properties
                 "properties": {               # Vendor/Custom properties
                 }
              }
            },
            {
              "accelerator": {
                 "acc_name": "",               # Standard properties
                 "properties": {               # Vendor/Custom properties
                 }
              }
            }
        ]
      }
    }
    

这个 GenericDriver 不应直接使用,在添加这个 GenericDriver 后,对于每个新设备,我们需要引入一个新的驱动程序,该驱动程序继承自这个 GenericDriver

2. 现有驱动程序变更 我们还应改进 FPGA 和 GPU 驱动程序,使其继承自该驱动程序并实现基础驱动程序接口。

通用的 FPGA 驱动程序接口:discoverupdateget_accelerator_stats 应该在 FPGA 驱动程序中实现。以下接口是 FPGA 特有的接口

  • program(controlpath, image_path) 使用提供的 bitstream 镜像编程 FPGA。

通用的 GPU 驱动程序接口:discoverupdateget_accelerator_stats 应该在 GPU 驱动程序中实现。

备选方案

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发者影响

实现

负责人

主要负责人:Yikun Jiang <yikunkero@gmail.com> Sundar Nadathur <sundar.nadathur@intel.com> wangzhh <wangzh21@lenovo.com>

工作项

  • 改进通用驱动程序以支持通用设备

  • 改进现有的 FPGA 驱动程序

  • 改进现有的 GPU 驱动程序

依赖项

测试

文档影响

参考资料

历史记录

修订版

发布名称

描述

Train

引入