GPU卡适配指南
更新时间: 2025/08/18
在Gitcode上查看源码概述
GPU(Graphic Process Unit)是专门为图形处理设计的处理器。GPU是GPU卡的核心部件。GPU卡也可称为显卡,是计算机的基本组成部分之一。
接口定义
以下是GPU类主要的interface包含关系
"path": "/bmc/kepler/Systems/:SystemId/Processors/GPU/:ID",
"interfaces": [
"bmc.kepler.Systems.Processor", -- 描述通用处理器的接口
"bmc.kepler.Systems.Processor.GPU", -- 描述GPU特有功能的接口
"bmc.kepler.Systems.Processor.GPU.Status", -- 描述GPU供电功能的接口
"bmc.kepler.Systems.Processor.GPU.Power", -- 描述GPU状态的接口
...
]bmc.kepler.Systems.Processor
| 属性 | 说明 | 建议实现方式 |
|---|---|---|
| ProcessorType | 处理器类型 | 对于GPU,在CSR配置为"2" |
| SystemId | 处理器所在系统Id | 默认值1,在CSR配置 |
| Id | 处理器Id | 默认值1,在CSR配置 |
| Name | 名称 | 根据需求在CSR配置 |
| Presence | 在位 | 默认值1,在CSR配置 |
| InstructionSet | 指令集 | 当前未应用,推荐在CSR配置 |
| Architecture | 芯片架构 | 当前未应用,推荐在CSR配置 |
| Manufacturer | 厂商 | 根据需求在CSR配置 |
| Family | 家族 | 当前未应用,推荐在CSR配置 |
| Model | 型号 | 根据需求在CSR配置 |
| PartNumber | 部件号 | 一般需要通过GPU带外管理协议获取。注意这是处理器的部件号,不是GPU卡的。 |
| SN | 序列号 | 一般需要通过GPU带外管理协议获取 |
| FirmwareVersion | 固件版本 | 一般需要通过GPU带外管理协议获取 |
| SocketDesignation | 槽位 | 默认值"1",在CSR配置 |
| Position | 位置 | 配成PCIe Riser${Slot} |
| ThermalTrip | 过热保护状态 | GPU不涉及 |
| Health | 健康状态 | 关联Component_PCIeCard的Health属性 |
| Replaceable | 是否可以作为独立的部件进行替换 | 对于GPU已在model.json配置默认值为true |
bmc.kepler.Systems.Processor.GPU
| 属性 | 说明 | 建议实现方式 |
|---|---|---|
| InfoRomVersion | InfoRom版本 | 属性源于NVIDIA的GPU,若不涉及可不实现 |
| Slot | 槽位号 | 同步PCIeDevice_1的SlotID属性 |
| VendorID | 厂商ID | 根据需求在CSR配置 |
| DeviceID | 设备ID | 根据需求在CSR配置 |
| SubVendorID | 子厂商ID | 根据需求在CSR配置 |
| SubDeviceID | 子设备ID | 根据需求在CSR配置 |
| GPUUtilization | GPU利用率 | 属性源于NVIDIA的GPU,若不涉及可不实现 |
| MemoryUtilization | 内存利用率 | 属性源于NVIDIA的GPU,若不涉及可不实现 |
| BoardPartNumber | 单板部件号 | 属性源于NVIDIA的GPU,若不涉及可不实现 |
| MemoryVendor | 内存厂商 | 属性源于NVIDIA的GPU,若不涉及可不实现 |
| MemoryPartNumber | 内存部件号 | 属性源于NVIDIA的GPU,若不涉及可不实现 |
| BuildDate | 构建日期 | 属性源于NVIDIA的GPU,若不涉及可不实现 |
| UUID | 通用唯一标识符 | 属性源于NVIDIA的GPU,若不涉及可不实现 |
| PrimaryGPUTemperatureCelsius | 主处理器温度 | 属性源于NVIDIA的GPU,若不涉及可不实现 |
bmc.kepler.Systems.Processor.GPU.Status
| 属性 | 说明 | 建议实现方式 |
|---|---|---|
| ECCModeEnabled | ECC模式当前使能状态 | 属性源于NVIDIA的GPU,若不涉及可不实现 |
| ECCModePendingEnabled | ECC模式重启后使能状态 | 属性源于NVIDIA的GPU,若不涉及可不实现 |
| ResetRequired | 是否需要重启 | 属性源于NVIDIA的GPU,若不涉及可不实现 |
| DoubleBitErrorPageCount | 双bit失效故障页个数 | 属性源于NVIDIA的GPU,若不涉及可不实现 |
| SingleBitErrorPageCount | 单bit失效故障页个数 | 属性源于NVIDIA的GPU,若不涉及可不实现 |
| NvLinkInfo | NvLink信息 | 属性源于NVIDIA的GPU,若不涉及可不实现 |
bmc.kepler.Systems.Processor.GPU.Power
| 属性 | 说明 | 建议实现方式 |
|---|---|---|
| PowerWatts | 功率 | 属性源于NVIDIA的GPU,若不涉及可不实现 |
| PowerBrakeSet | power brake状态 | 属性源于NVIDIA的GPU,若不涉及可不实现 |
| ExternalPowerSufficient | 外部供电是否充足 | 属性源于NVIDIA的GPU,若不涉及可不实现 |
协议实现
从资源协作接口的定义可以看到,实际上若非NVIDIA的GPU,需要适配的功能点实际上很少
NVIDIA的GPU
- NVIDIA的GPU支持自定义的带外管理协议,即SMBus Post Box Interface(SMBPBI)。当前openUBMC已支持,新增NVIDIA的GPU时,理论上只需增加配置文件即可。详情可参考general_hardware仓的Tesla_T4.lua
- 注意CSR配置的Model字段要与配置文件名称相匹配
非NVIDIA的GPU
- 除在CSR配死的字段外,重点应当关注温度、功耗、序列号、固件版本、部件号。温度、功耗影响整机散热策略设计,序列号、固件版本、部件号影响部件资产管理
- 如果需要实现新的带外管理协议,需要修改general_hardware组件代码,注意避免执行NVIDIA GPU的代码流程