1.1 libhsakmt 中的 HSA Topology 模型概览

摘要: KFD 驱动通过 Topology(拓扑)描述异构系统中 CPU/GPU 节点及其互联关系。本文从概念层面讲清拓扑模型的核心抽象——Node、IO Link、Memory Region,以及为什么异构计算需要拓扑感知。


1. 引言:如何描述一个异构计算系统

一个异构计算系统可以从以下几个维度来描述:

  1. 计算节点与计算单元 — 系统中有哪些异构处理器(CPU、GPU、DPU 等),每个处理器具备怎样的计算能力(CU 数量、SIMD 宽度、时钟频率等)。
  2. 内存与Cache层次(Memory & Cache Hierarchy) — 每个节点拥有的本地内存(HBM、GDDR、DDR)、缓存层级(L1/L2/L3),以及跨节点的内存可见性与一致性模型。
  3. 互联拓扑(Interconnect) — 节点之间的连接方式(xGMI/Infinity Fabric、PCIe、CXL、NVLINK 等),以及由此决定的带宽、延迟和跳数。
  4. 硬件级协同与管理机制 — 使各节点协作的基础设施,包括信号/中断机制、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 > 0NumFComputeCores > 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 级别的共享内存,仅 GPU
ScratchGPU 每线程的私有栈空间
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/s)
MinLatency / MaxLatency延迟范围(ns)
NodeFrom / 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~30x(PCIe vs VRAM local)
拓扑变化静态热插拔场景下可能变化

4. 小结

KFD Topology 的设计核心思想:

  1. 统一建模:CPU 和 GPU 都是 Node,消除异构差异
  2. 图结构:Node + Link 构成有向加权图,完整描述系统互联
  3. 分层属性:System → Node → Memory/Cache/Link,逐层细化
  4. 为上层决策服务:ROCr runtime 依据拓扑信息做内存放置、数据迁移、任务调度

下一篇将详细介绍拓扑信息在 sysfs 中的具体表示,以及 libhsakmt 如何解析并构建内存中的拓扑快照。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值