1.1 libhsakmt 中的 HSA Topology 模型概览
摘要KFD 驱动通过 Topology拓扑描述异构系统中 CPU/GPU 节点及其互联关系。本文从概念层面讲清拓扑模型的核心抽象——Node、IO Link、Memory Region以及为什么异构计算需要拓扑感知。1. 引言如何描述一个异构计算系统一个异构计算系统可以从以下几个维度来描述计算节点与计算单元— 系统中有哪些异构处理器CPU、GPU、DPU 等每个处理器具备怎样的计算能力CU 数量、SIMD 宽度、时钟频率等。内存与Cache层次Memory Cache Hierarchy— 每个节点拥有的本地内存HBM、GDDR、DDR、缓存层级L1/L2/L3以及跨节点的内存可见性与一致性模型。互联拓扑Interconnect— 节点之间的连接方式xGMI/Infinity Fabric、PCIe、CXL、NVLINK 等以及由此决定的带宽、延迟和跳数。硬件级协同与管理机制— 使各节点协作的基础设施包括信号/中断机制、DMA 引擎、IOMMU、doorbell、队列调度硬件等。KFD 的 Topology 子系统正是对前三个维度的系统化建模用Node表示计算实体每个 Node 挂载其计算单元和内存区域Node 之间通过IO Link描述互联关系。第四个维度则由 KFD 的其他子系统doorbell、事件页、队列管理等承载。理解这个分层视角有助于把握 Topology 模型在整个 ROCm 软件栈中的定位。2. 拓扑模型的三个核心实体KFD Topology 的结构可以从两个层面理解节点间互联Node 作为顶点、IO Link 作为有向加权边构成一个描述系统互联拓扑的有向加权图。节点内资源每个 Node 内部挂载 Memory Region 和 Cache 层级形成一棵资源从属树描述该节点的内存与存储层次。2.1 Node节点每个 Node 代表系统中的一个计算单元可以是 CPU 或 GPU。每个节点拥有属性说明Node ID系统唯一标识sysfs 中的目录编号类型CPU 或 GPU通过NumCPUCores 0或NumFComputeCores 0区分计算能力核心数、引擎数、SIMD 数等设备标识VendorId、DeviceId、Stepping 等附属资源Memory Regions、Cache、IO Links关键点CPU 和 GPU 在拓扑模型中是平等的 Node统一编址、统一查询接口。2.2 Memory Region内存区域每个 Node 拥有一个或多个 Memory Region描述该节点可管理的内存资源类型说明VRAM (GPU Local)GPU 本地显存带宽最高LDS (Local Data Share)CU 级别的共享内存仅 GPUScratchGPU 每线程的私有栈空间SVM (System/Shared)CPU/GPU 统一虚拟地址空间MMIO Remap特殊用途的 MMIO 映射每个 Memory Region 通过HsaMemoryProperties描述其大小、标志位、地址范围等。2.3 IO Link互联链路IO Link 描述两个 Node 之间的物理或逻辑连接。每条链路的核心属性属性说明Type连接类型PCIe、XGMI、QPI/UPI、间接推导等Weight权重综合衡量延迟/跳数越小越优MinBandwidth / MaxBandwidth带宽范围MB/sMinLatency / MaxLatency延迟范围nsNodeFrom / NodeTo链路的两端节点链路类型与典型特征类型 典型带宽 典型权重 场景 ───────────────────────────────────────────────────── PCIe 4.0 x16 ~32 GB/s 20 CPU-GPU 常规连接 XGMI (IF) ~96 GB/s 15 GPU-GPU 直连 (hive) QPI/UPI ~38 GB/s 20 CPU-CPU 跨 socket 间接链路 取决于路径 40 无直连时的推导路径间接链路推导当两个节点没有直连时如 GPU0 到 CPU1 需经过 CPU0 中转libhsakmt 会自动推导间接路径并计算累计权重。2. 拓扑模型的层次关系从包含关系看整个模型的层次如下System (HsaSystemProperties) ├── PlatformId, NumNodes │ ├── Node 0 (HsaNodeProperties) │ ├── Memory Region 0 (HsaMemoryProperties) -- e.g., System RAM │ ├── Memory Region 1 (HsaMemoryProperties) -- e.g., SVM │ ├── Cache L1 (HsaCacheProperties) │ ├── Cache L2 (HsaCacheProperties) │ ├── IO Link → Node 1 (HsaIoLinkProperties) │ └── IO Link → Node 2 (HsaIoLinkProperties) │ ├── Node 1 (HsaNodeProperties) │ ├── Memory Region 0 -- VRAM │ ├── Memory Region 1 -- LDS │ ├── Memory Region 2 -- Scratch │ ├── Memory Region 3 -- SVM │ ├── IO Link → Node 0 │ └── IO Link → Node 3 (P2P, XGMI) │ └── ...3. 与 NUMA Topology 的对比维度NUMA (CPU-only)KFD Topology节点类型CPU socketCPU GPU互联类型QPI/UPI 单一PCIe/XGMI/QPI 多种混合内存类型DDR 统一VRAM/LDS/Scratch/SVM 多类型发现方式ACPI SRAT/SLITsysfs/sys/.../kfd/topology/带宽差异~2x~30xPCIe vs VRAM local拓扑变化静态热插拔场景下可能变化4. 小结KFD Topology 的设计核心思想统一建模CPU 和 GPU 都是 Node消除异构差异图结构Node Link 构成有向加权图完整描述系统互联分层属性System → Node → Memory/Cache/Link逐层细化为上层决策服务ROCr runtime 依据拓扑信息做内存放置、数据迁移、任务调度下一篇将详细介绍拓扑信息在 sysfs 中的具体表示以及 libhsakmt 如何解析并构建内存中的拓扑快照。