本专栏深入解析 AMD ROCm 生态核心组件 rocr-runtime 的用户态驱动层 libhsakmt(Thunk),沿着"设备管理 → 拓扑发现 → 虚拟地址空间 → 内存操作 → 事件机制"的主线,逐层拆解其与 KFD 内核驱动交互的 ioctl 协议与实现细节。本文为专栏的总目录,便于按章节检索与阅读。
第 0 章 · 专栏总览
- 0.1 ROCm rocr-libhsakmt 实现深度剖析专栏介绍
- 0.2 ROCm 软件栈全景:libhsakmt 在 rocm 中的位置
- 0.3 libhsakmt 源码结构总览
- 0.4 阅读本专栏的前置知识与环境搭建指南
第 1 章 · 架构概览与设备管理
- 1.1 HSA(异构系统架构) 驱动 libhsakmt 概览
- 1.2 理解 libhsakmt 库功能的两个维度:subcontext 和 ioctl
- 1.3 HSA libhsakmt 的设备管理
- 1.4 KFD 设备文件的获取与驱动握手协议
- 1-2 多 GPU 跨卡 VRAM 访问机制分析
第 2 章 · HSA Topology 拓扑模型
- 2.1 libhsakmt 中的 HSA Topology 模型概览
- 2.2 HSA 的 Topology sysfs 布局与发现机制
- 2.3 计算节点的计算能力描述:HsaNodeProperties
- 2.4 计算节点的 Memory 能力描述:HsaMemoryProperties
- 2.5 计算节点的互联(interconnect)能力描述:HsaIoLinkProperties
- 2.6 计算节点的 Cache 能力描述:HsaCacheProperties
第 3 章 · 虚拟地址空间与 Aperture / VM
- 3.0(VM) libhsakmt 中的 vm 概念和 acquire_vm 功能
- 3-0 虚拟地址空间划分方法:aperture 概念
- 3-1 Apertures
- 3-2 manageable_aperture_t 实现分析
- 3-2(补) manageable_aperture 的虚拟地址管理
- 3-3 apertures 之 mem_handle_aperture
- 3-4 aperture 之 svm aperture
- 3-5 svm-reserve 模式实现分析
第 4 章 · 内存操作全生命周期
- 4 内存操作全景:分配/注册 → GPU 映射 → 使用 → 解映射 → 注销 → 释放
- 4(Flags) HsaMemFlags 分析
- 4(Flags) HsaMemFlags 分析(续)
- 4(Flags) 从 HsaMemFlags 与 HsaMemMapFlags 理解 GPU 存储管理硬件技术
- 4(Flags) HsaMemFlags 标记分析:CoarseGrain 内存一致性粒度分析(综述)
- 4(Flags) HsaMemFlags 标记分析:CoarseGrain 一致性标志从用户态到内核的传递链(Thunk → ioctl → KFD)
- 4(NUMA) libhsakmt 内存分配中的 NUMA 使用流程与实现
- 4-1 memory alloc & free
- 4-2 fmm_allocate_memory_object 实现分析
- 4-3 memory map & unmap
- 4-4 userptr 的 register 实现机制详解
- 4-5 SVM IOCTL 的实现问题分析与建议的解决方案
- 4-6 指针信息反查:HsaPointerInfo 与 hsaKmtQueryPointerInfo / hsaKmtSetMemoryUserData
第 5 章 · Event / Signal 机制
- 5 event(signal) 机制框架概览
- 5.1 event 机制全景---从 Doorbell 到 Signal
- 5.2 event 内核实现 --- KFD Event 的低延迟、低开销、可扩展技术
- 5.3 libhsakmt 层实现------如何封装和操作 event
- 5.4 event 实战------多 Queue 完成检测与同步模式
- 5.5 event 专题:event_age ------ KFD Event 的增量等待协议
- 5.5(补) event 机制中的 KFD 中断处理全流程解析
- 5.6 libhsakmt 的 Event 设计要点总结
第 6 章 · GART / 地址转换
第 7 章 · 内存共享机制(export / import)
第 8 章 · Doorbell 机制
第 9 章 · User Queue 用户态队列
- 9-1 user queue 的概念
- 9-2 user queue 的创建与销毁
- 9-3 queue 的内核创建流程
- 9-3(补) queue 的内核创建流程------DQM vs PQM 架构设计与功能区别
- 9-3(补) queue 的内核创建流程------硬件队列创建和配置
- 9-4 Queue 与 Event 关联机制
- 9-5 queue 测试用例 DisableCpQueueByUpdateWithNullAddress 功能详解