设备目录
设备是通过 vfio-user 导出给 QEMU 主机的 PCI 模型。本页列出设备种类与配置事实;PCI/BAR 接口、模型覆盖范围与客户机驱动要求在第 4 章详述,设备适配器契约在 设备适配器。
设备种类
设备 |
kind |
说明 |
模型细节 |
|---|---|---|---|
|
|
gem5 MI300X 性能模型;每个进程一个 GPU |
|
|
|
QEMU |
|
声明的 device kind |
|
自定义 |
resources/devices/gpu/mi300x.yaml提供mi300x与mi300x-aarch64两个模板;后者只覆盖 gem5 二进制。resources/devices/pci/qemu-edu.yaml提供qemu-edu与qemu-edu-aarch64两个模板;前者需要带 vfio-user 支持的 QEMU。
设备字段
字段 |
必需 |
说明 |
|---|---|---|
|
是 |
内置 |
|
否 |
默认由 |
|
否 |
选择模板;count 把一个条目展开为多个设备进程 |
|
gem5-mi300x 必需 |
gem5 配置文件; |
|
除 gem5-mi300x 外必需 |
gem5-mi300x 默认使用 |
|
否 |
覆盖适配器命令;这类命令需要 |
|
gem5-mi300x 必需 |
恰好一个名为 |
|
否 |
vendor_id、device_id、msix_vectors 与 rom;MI300X 给定时必须与硬件一致 |
|
否 |
适配器参数,见 设备适配器 |
|
否 |
modprobe 参数与 cmdline 提示;cmdline 要求 vHost 声明镜像或内核 |
|
否 |
host 侧 option ROM,作为 vfio-user 客户端的 romfile 暴露 |
启动与就绪约定
内置适配器
gem5-mi300x与qemu-device各自生成启动命令;声明的 device kind 提供argv或command。每个设备进程先于主机启动。就绪探测按顺序进行:输出日志标记(
ready_log,gem5 默认是 MI300X 的监听行)、socket 存在、QMP 协商(qemu-device)。设备就绪后向每个依赖它的主机会交出租约;主机停止并释放租约后,最后一个租约释放时设备退出。
每个设备程序必须在前台运行、把资源使用者保留在自己的进程组中并保持继承的文件描述符打开。
pci.rom由主机模板作为 vfio-user 客户端的romfile传入,客户机可通过设备 ROM BAR 读取;launcher 在分配会话资源前检查文件是否存在。
设备与内存池
设备区域按声明顺序追加在客户机 RAM 之后。区域全名由设备 id 与区域名组成,例如
mi300x-0.vram。MI300X 默认 16 GiB VRAM,
gpu-8把每个设备覆盖为 8 GiB;qemu-edu没有私有区域。区域大小、偏移与对齐写入会话目录的
layout.json;池计算方法见 单机拓扑。
如何选择设备
需要 GPU 性能模型与
amdgpu驱动路径:使用gem5-mi300x,样例见 single-gpu 机器 与 gpu-8 机器。需要验证 vfio-user 设备链路或 option ROM:使用
qemu-device的edu,样例见 qemu-device 机器。需要自定义启动命令:声明 device kind 并提供
ready_log;仓库样例尚未使用该路径,契约见 设备适配器。模型细节统一看第 4 章:PCI/BAR 见 MI300X PCI/BAR 接口,性能模型见 MI300X 性能模型,QEMU 功能设备见 QEMU 作为 device model,驱动要求见 客户机驱动要求。
相关页面
机器目录:机器目录
vHost 配置:vHost 配置
编写拓扑:如何编写拓扑 YAML
适配器契约:设备适配器
源码:
resources/devices/gpu/mi300x.yaml、resources/devices/pci/qemu-edu.yaml、crates/cosim-topology/src/adapter/