新型 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 驱动程序接口:discover、update、get_accelerator_stats 应该在 FPGA 驱动程序中实现。以下接口是 FPGA 特有的接口
program(controlpath, image_path) 使用提供的 bitstream 镜像编程 FPGA。
通用的 GPU 驱动程序接口:discover、update、get_accelerator_stats 应该在 GPU 驱动程序中实现。
备选方案¶
无
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
无
开发者影响¶
无
实现¶
负责人¶
主要负责人:Yikun Jiang <yikunkero@gmail.com> Sundar Nadathur <sundar.nadathur@intel.com> wangzhh <wangzh21@lenovo.com>
工作项¶
改进通用驱动程序以支持通用设备
改进现有的 FPGA 驱动程序
改进现有的 GPU 驱动程序
依赖项¶
测试¶
文档影响¶
无
参考资料¶
无
历史记录¶
发布名称 |
描述 |
|---|---|
Train |
引入 |