AMDGPU ROCm驱动栈全析
文章平均质量分 86
本专栏聚焦AMDGPU计算核心驱动栈:从 Linux 内核层 驱动底层实现到 ROCR-Runtime 运行时核心逻辑,逐层拆解用户态与内核态的交互机制。以源码视角讲透驱动架构、调用流程与调优要点,帮开发者吃透 ROCm 从内核驱动到运行时的完整技术链路,掌握底层排障与优化核心思路。
余额抵扣
助学金抵扣
还需支付
¥29.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
DeeplyMind
图形领域、AI领域技术开发者,专注于OpenGL/Vulkan图形渲染和AI计算的GPU驱动、GPU硬件开发技术栈和实践。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ROCm-Systems 单一大仓库(Monorepo)企业实践指南
本文针对企业研发团队解析AMD将20多个ROCm仓库合并为单一超级仓库(rocm-systems)的决策及影响。合并主要解决多仓库架构导致的版本协调困难、集成测试碎片化等问题,优先整合PyTorch构建所需核心组件。新架构通过projects/(独立发包组件)与shared/(共享依赖)分层设计,实现跨组件原子提交、单commit锁定整栈状态,显著提升构建可复现性。企业需关注迁移状态表,调整CI/CD流程以适应大仓库模式,利用sparse-checkout等技术优化本地开发。原创 2026-07-06 17:54:54 · 621 阅读 · 0 评论 -
读懂 ROCm 分层:HIP → ROCr → libhsakmt 核心概念对照表
本文深入解析了AMD ROCm软件栈的分层架构与核心概念映射关系。通过分层对比表,系统梳理了HIP、ROCr/HSA运行时、libhsakmt和KFD四个层次中设备、流/队列、事件/信号等关键概念的对应关系。文章重点分析了三个典型"翻译链":设备标识如何从hipDevice_t逐层转换为内核gpu_id;HIP流如何实现为用户态AQL队列并最终映射为MQD描述符;事件机制如何通过信号量和中断实现。这些映射揭示了ROCm从编程抽象到硬件操作的完整路径,展现了其用户态直接提交的设计精髓。原创 2026-07-14 11:53:13 · 1346 阅读 · 0 评论 -
1. ROCm HIP 整体设计架构分析
HIP 架构解析:分层设计与核心对象关系 HIP(Heterogeneous-Compute Interface for Portability)是AMD推出的CUDA兼容异构计算框架。其架构分为四层:1)API兼容层提供CUDA-like接口;2)HIP运行时层维护CUDA语义对象模型;3)ROCclr抽象层提供设备无关接口;4)后端执行层对接具体硬件。原创 2026-07-01 16:47:35 · 461 阅读 · 0 评论 -
2. ROCm HIP 层的 HSA Topology 发现流程
本文分析了HIP runtime初始化过程中设备拓扑发现的完整流程,揭示了从底层HSA agent枚举到HIP设备表构建的分层实现机制。核心路径为:ROCr/HSA层枚举CPU/GPU agent并获取拓扑信息 → ROCclr后端将HSA agent封装为roc::Device → ROCclr核心层注册统一设备视图 → HIP运行时基于ROCclr设备表构建hip::Device实例。原创 2026-07-01 17:58:11 · 344 阅读 · 0 评论 -
3. ROCm HIP 内存分配接口到 libhsakmt 的调用路径分析
本文分析了HIP内存分配机制的核心链路,从用户态API到内核驱动的完整调用路径。关键点包括: HIP内存分配遵循从HIP Runtime API→ROCclr→ROCr→libhsakmt→KFD的调用层次,涉及指针、内存对象和底层资源的三重转换。 分配前需要完成设备拓扑发现,建立device-context-device的完整关联关系,包括HSA内存池和NUMA信息。原创 2026-07-02 05:00:00 · 508 阅读 · 0 评论 -
4. ROCm HIP hipMemAdvise 到 hsaKmtSVMSetAttr 调用链分析
本文详细梳理了HIP/ROCclr上层运行时如何将用户的内存建议(如hipMemAdvise)逐层转换为ROCr的SVM属性设置调用,最终通过KFD内核驱动完成HMM/SVM range属性更新。整个过程涉及四次属性表示的翻译,从HIP枚举到ROCclr内部枚举,再到HSA属性对,最终转换为KFD ioctl参数。调用链包括HIP API层参数校验、ROCclr抽象层接口转发、核心映射层的属性转换,以及ROCr运行时和libhsakmt的底层实现。原创 2026-07-01 13:22:12 · 578 阅读 · 0 评论 -
5. ROCm HIP 当前设备管理机制 与 ihipMemAdvise 实现分析(续)
分析HIP运行时设备管理机制,分为两部分: 第一部分阐述HIP层的当前设备管理机制,核心是通过线程局部变量tls.device_维护每个线程的当前设备指针,指向全局设备列表g_devices。hipSetDevice修改该指针,getCurrentDevice读取指针,实现与CUDA兼容的per-thread设备管理。 第二部分以ihipMemAdvise为例解析实现结构,说明为何存在两个不同来源的设备对象。理解这一设计的关键在于区分线程当前设备(getCurrentDevice)和API参数显式指定的设备原创 2026-07-02 15:44:07 · 431 阅读 · 0 评论 -
6. ROCm HIP 虚拟内存管理(VMM)接口 hipMemCreate/hipMemMap/hipMemSetAccess 到 libhsakmt 的调用路径分析
本文分析了ROCm HIP中的虚拟内存管理(VMM)API(如hipMemCreate、hipMemAddressReserve等)与hipMalloc的核心差异。hipMalloc一次性完成物理内存分配、虚拟地址映射和页表建立,而VMM API将这四步解耦:通过hipMemAddressReserve预留虚拟地址、hipMemCreate分配物理内存、hipMemMap绑定地址与内存、hipMemSetAccess控制设备访问权限。原创 2026-07-14 21:29:18 · 433 阅读 · 0 评论 -
7. ROCm HIPamd::Context 源码剖析,以及 device context 与 host context 的区别
本文分析了 AMD ROCm 开源栈中 amd::Context 的设计与实现。作为 ROCclr 运行时的核心对象,Context 管理一组设备的生命周期,是内存分配与资源归属的关键枢纽。文章重点解析了两种典型上下文: 设备上下文(per-device context):绑定单个 GPU 设备,负责该设备上的内存分配与命令执行 主机上下文(host context):跨所有设备的全局上下文,支持主机内存分配和 SVM 共享虚拟内存 通过源码分析,详细阐述了 Context 的设备管理、主机内存分配、SVM原创 2026-07-24 13:26:57 · 404 阅读 · 0 评论 -
ROCm rocr-runtime 库详细解析目录
摘要: 本系列文档系统介绍AMD ROCm HSA Runtime技术栈,涵盖基础概念、核心组件、内存管理、任务调度及高级特性。HSA Runtime作为ROCm核心组件,提供GPU设备管理、内存分配、任务调度等功能。内容分为五部分:HSA基础(异构计算原理、编程模型)、核心组件(Agent/Queue等实现)、内存管理(统一内存/IPC共享)、任务调度(AQL队列机制)及高级特性。包含代码路径runtime/hsa-runtime/和核心模块解析。原创 2026-03-01 05:30:00 · 2418 阅读 · 0 评论 -
第01章:什么是HSA与异构计算
本章介绍了异构计算的发展历程和HSA(异构系统架构)的诞生背景。主要内容包括:1)单一处理器时代面临的功耗墙、指令级并行墙和内存墙三大瓶颈;2)多核处理器与专用加速器的兴起及其特点;3)异构计算的定义与典型架构;4)早期异构编程存在的多套编程模型、显式内存管理等问题;5)HSA Foundation的成立及其核心使命。HSA旨在通过统一编程模型、简化内存管理、提高效率和开放标准来解决异构计算面临的挑战。原创 2026-03-01 20:02:08 · 1445 阅读 · 4 评论 -
第02章:HSA-Runtime架构概览
摘要: 本章深入解析HSA Runtime的三层架构设计,包括公共API层(C语言接口)、核心实现层(C++业务逻辑)和驱动抽象层(硬件交互)。重点介绍了Runtime的核心组件(Agent、Queue、Signal、Memory)及其关系,以及初始化流程、配置选项和调试功能。通过学习,读者将掌握HSA Runtime的整体架构,为后续模块学习奠定基础。原创 2026-03-02 05:30:00 · 2798 阅读 · 0 评论 -
第03章:HSA编程模型基础
摘要:本章详细介绍了HSA异构编程模型的核心概念。HSA采用主机主导、设备计算的协同模式,CPU负责任务调度,GPU执行并行计算。其统一内存模型消除了传统异构编程中的显式数据拷贝。执行模型基于Kernel、Wavefront和Work-item三个层级,支持大规模数据并行处理。内存模型包含Global/Local/Private三级层次结构,并提供了Signal、Barrier等同步原语保证执行顺序。通过理解这些基础概念,开发者可以构建完整的HSA程序生命周期,充分发挥异构计算优势。原创 2026-03-03 05:15:00 · 2014 阅读 · 0 评论 -
第05章:HSA-API快速入门
本章详细介绍了HSA Runtime的核心API使用方法,主要内容包括:1)Runtime初始化和销毁的基本流程;2)错误处理机制与版本查询;3)设备发现与查询方法,包括枚举所有Agents和查找特定GPU设备。通过完整代码示例演示了如何初始化HSA Runtime、获取系统信息、管理计算设备等基础操作,为后续内存管理、任务调度等高级功能打下基础。学习本章后,读者将掌握HSA应用程序的基本开发框架和核心API调用方法。原创 2026-03-09 11:51:39 · 1195 阅读 · 0 评论 -
第06章:Agent设备抽象
本章深入探讨HSA Runtime中的Agent设备抽象层,介绍了Agent作为计算设备统一抽象的设计理念和核心功能。Agent通过统一接口实现对CPU、GPU、AIE等不同类型计算设备的统一管理,支持属性查询、队列创建、内存操作等核心功能。详细分析了三种主要Agent类型的特点、典型属性和使用场景,以及Agent类的继承体系和核心功能实现。本章还阐述了Agent标识符的设计优势,为理解HSA Runtime的设备管理机制奠定基础。原创 2026-03-09 11:55:15 · 1270 阅读 · 0 评论 -
第07章:GPU-Agent深度解析
摘要(149字) 本章深入解析GPU Agent的核心实现,重点涵盖硬件队列(AQL Queue)、SDMA引擎、内存管理及Wavefront调度机制。通过源码分析展示GPU Agent如何高效管理并行计算任务,涉及GpuAgent类结构、初始化流程(硬件属性查询、ISA初始化、内存区域创建等)及关键组件(Scratch内存、DMA引擎、Trap处理)。学习目标包括掌握AQL队列原理、SDMA数据传输、Wavefront调度策略及GPU内存管理,需具备GPU架构基础。原创 2026-03-10 05:00:00 · 1616 阅读 · 0 评论 -
第08章:CPU-Agent与混合调度
本章深入探讨了CPU Agent的实现机制及其与GPU的混合调度策略。主要内容包括: CPU Agent架构:作为Agent基类的CPU实现,负责主机端控制和轻量级计算任务,与GPU Agent相比具有简化设计(无ISA、专用DMA等)和NUMA优化特性。 Host Queue实现:纯软件任务队列,通过环形缓冲区、原子操作和条件变量模拟GPU的硬件队列行为,适用于CPU端的任务调度。 混合调度策略:重点分析了CPU-GPU协同工作机制,包括任务分发、内存一致性维护和执行流同步等关键技术。原创 2026-03-10 05:00:00 · 996 阅读 · 0 评论 -
第09章:Driver驱动抽象层
本章深入解析HSA Runtime中Driver层的核心设计与实现。作为Runtime的基础设施,Driver承担着与底层硬件交互的关键职责,为Runtime、Agent、Queue、Memory等组件提供统一接口。主要内容包括:Driver的架构定位与接口定义、多驱动管理机制、KFD交互流程、设备发现与拓扑枚举实现,以及内存分配、队列创建等底层操作的细节实现。通过本章学习,读者将掌握Driver与各组件的关系、多驱动并存场景的处理方法,以及相关调试技巧和性能优化策略。原创 2026-03-16 15:09:45 · 1302 阅读 · 0 评论 -
第10章:Topology拓扑发现
本章深入探讨了HSA Runtime如何发现和管理系统拓扑结构,包括CPU/GPU节点互连、NUMA域映射和PCIe/XGMI链路属性等关键内容。通过典型拓扑示例和层次模型,解析了系统拓扑的组成结构。详细介绍了拓扑发现流程,包括初始化阶段的核心步骤、节点属性查询和邻接关系构建。核心数据结构部分展示了TopologyNode、IoLink等关键类的实现,以及拓扑管理器的功能接口。本章内容为优化数据传输和任务调度提供了底层支持,是理解异构计算系统架构的重要基础。原创 2026-03-17 05:00:00 · 1043 阅读 · 0 评论 -
第11章:AMDGPU 的 ISA 指令集架构
本章深入解析了HSA Runtime如何管理GPU指令集架构(ISA),涵盖三大关键内容: ISA抽象设计:通过层次化模型和Isa类实现对不同GPU架构的统一管理,包括版本标识、Wavefront配置和特性查询功能。 AMD GPU架构演进:对比GCN/RDNA/CDNA架构的核心差异,分析各代特性(如Wave32/CDNA矩阵核心)及适用场景,提供架构选择指南。 ISA版本管理:从硬件查询到运行时对象创建的完整流程,展示如何通过KFD接口获取ISA信息并初始化兼容性检查机制。原创 2026-06-25 05:00:00 · 311 阅读 · 0 评论 -
第12章:Runtime生命周期管理
摘要 本章深入解析HSA Runtime的生命周期管理,重点介绍初始化流程、延迟加载策略和资源管理机制。通过代码示例展示了Runtime的多阶段初始化过程(驱动加载、拓扑发现、Agent创建等),并分析典型耗时分布(50ms总时长)。特别设计了延迟初始化方案,对非核心功能(如图像扩展)实现按需加载,通过双重检查锁确保线程安全。内存池等资源也采用首次访问时分配的延迟策略,优化系统启动性能。关键技术点包括引用计数、单例模式和多线程安全机制,为构建高效可靠的HSA应用提供基础支撑。原创 2026-06-25 05:00:00 · 406 阅读 · 0 评论 -
第13章:Memory Region内存区域
文章摘要 本章详细解析HSA Runtime的内存区域抽象机制,涵盖内存区域类型(系统内存/显存/LDS/内核参数区)、内存属性(细粒度/粗粒度)及其一致性语义与跨设备访问能力。HSA Runtime将内存视为具有所有者、物理位置、访问权限和迁移能力的资源,涉及CPU、GPU、SDMA等多种硬件协同管理。通过分析MemoryRegion/MemoryPool的设计,解答了诸如CPU/GPU共享访问、显存性能差异、SVM页错误触发等实际问题。原创 2026-07-08 11:37:06 · 333 阅读 · 0 评论 -
第14章:rocr-runtime 层的内存分配、查询与释放
这篇文章深入探讨了HSA Runtime的内存分配与释放机制,主要内容包括: 内存分配完整流程:详细解析了从API到Driver再到内核的完整调用链,包括System Memory和VRAM两种主要分配路径的区别。 MemoryRegion分配实现:展示了核心分配逻辑和Agent层的实现,强调参数验证、对齐处理、标志转换等关键步骤。 指针信息查询:介绍了通过hsa_amd_pointer_info反查内存分配状态的方法。 其他重要机制:包括内存对齐要求、大页支持、VRAM管理策略以及Driver层的关键作用原创 2026-07-14 14:12:11 · 438 阅读 · 0 评论 -
第15章:统一内存与一致性
摘要:本章深入解析HSA Runtime的统一内存模型与一致性机制,重点介绍其创新性的统一地址空间设计,使CPU与GPU共享虚拟地址。内容涵盖Fine-grained与Coarse-grained内存的区别、内存一致性模型、Fence操作及Driver层支持。通过对比传统异构编程模型,阐述了统一地址空间在简化编程、避免数据竞争及优化性能方面的优势。详细剖析了Driver如何通过标志控制内存属性,并提供了Fine-grained内存的原子操作示例。本章对理解CPU-GPU协同内存语义、选择合适内存类型及解决一原创 2026-08-05 05:00:00 · 228 阅读 · 0 评论 -
第23章:Signal信号系统
摘要 本章深入解析HSA Runtime(ROCr)的Signal信号系统,这是HSA架构中的核心同步原语。Signal本质上是可原子操作的64位有符号整数,通过hsa_signal_t句柄提供跨设备同步功能,广泛应用于内核完成通知、队列doorbell、设备间同步等场景。 主要内容包括: 设计理念:Signal遵循值语义、不透明句柄、ABI冻结和策略可插拔四大原则,区分了HSA规范强制要求与AMD实现细节 类层次结构:剖析Signal抽象基类及其派生类(BusyWaitSignal、InterruptSi原创 2026-08-06 05:00:00 · 328 阅读 · 0 评论 -
rocr-runtime 相关专题:内存序与 host-device 一致性
这篇文章深入探讨了信号同步的底层机制,重点分析了内存序与一致性在CPU-GPU同步中的关键作用。主要内容包括: 同步问题的三个层次:编译器重排、CPU乱序执行和系统级可见性,内存序作为跨层约束机制。 区分原子性(保证信号值完整性)与内存序(保证配套数据可见性)两个正交概念。 解析C++11六种内存序语义,强调release/acquire的半屏障特性及其配对使用原则。 指出内存序仅约束CPU端执行,GPU端依赖硬件一致性协议和fine-grain内存域共同保证可见性。 对比fine-grain与coarse原创 2026-08-06 05:00:00 · 668 阅读 · 0 评论 -
amdgpu SVM: SVM Range 跨界处理---attr_range 与 gpusvm_range 边界对齐机制
分析了AMDGPU SVM实现中两套range管理机制(attr_range和gpusvm_range)的边界对齐问题。当用户设置新属性范围与现有gpusvm_range边界不对齐时,由于gpusvm_range不支持动态分割,提出了销毁跨界range并重建的解决方案。重点介绍了XNACK OFF模式下的跨界处理函数svm_restore_realign_boundary的实现流程,包括查找跨界range、暂停GPU队列、清除PTE、异步重建等关键步骤。原创 2026-05-21 05:00:00 · 226 阅读 · 0 评论 -
AMDGPU 基于DRM SVM框架的新SVM功能实现 :属性子系统结构体关系解析
AMD正在通过drm svm框架重构SVM实现,近期提交了POC验证版本的技术方案。该方案采用三层架构:用户空间通过ioctl接口与内核交互,内核空间分为属性管理和SVM核心两部分。核心结构包括属性值集合(amdgpu_svm_attrs)、区间-属性映射节点(amdgpu_svm_attr_range)和属性管理器(amdgpu_svm_attr_tree)。系统支持多种属性变更类型和标志位分类,包括影响GPU页表的PTE级标志和影响映射策略的映射级标志。目前方案仍处于验证阶段,后续可能调整优化。原创 2026-03-24 14:15:16 · 1014 阅读 · 0 评论 -
drm_pagemap 迁移路径与 mmap_lock / PTL 使用分析
本文分析了 Linux DRM 子系统中 device-private 内存迁移的两条路径实现差异。核心结论是:两条路径都依赖 PTL 保证 PTE 修改的原子性,但 fault 路径(由 CPU 缺页触发)额外持有 mmap_read_lock 来保护 VMA 遍历,而 eviction 路径(由驱动主动触发)通过 folio lock + rmap 机制定位 PTE,无需 mmap_lock。这种设计差异源于两者不同的触发场景:fault 路径处理特定虚拟地址的缺页,需要 VMA 信息;eviction原创 2026-07-21 17:18:44 · 81 阅读 · 0 评论 -
amdgpu SVM Set Attr 流程分析:XNACK ON vs OFF
分析了AMDGPU SVM在XNACK ON/OFF模式下的设计差异。XNACK是AMD GPU的硬件特性,ON模式下支持缺页重试,OFF模式则需预先建立映射。文章详细梳理了两种模式的处理流程:XNACK OFF需同步建立GPU映射,并通过restore worker异步重建;XNACK ON则利用缺页处理机制按需建立映射。研究基于AMD工程师提交的最新内核版本,跟踪了SVM在访问权限、映射策略等属性变更时的处理策略,为理解AMD GPU内存管理机制提供了技术参考。原创 2026-05-21 05:00:00 · 210 阅读 · 0 评论 -
AMDGPU SVM 属性设置流程:从用户态 ioctl 到 attr_set_ctx 的完整信息收集
AMD GPU正在重构SVM(共享虚拟内存)实现,采用DRM SVM框架。本文分析了从用户态ioctl调用到内核态属性变更处理的完整流程。核心设计是通过属性管理器维护虚拟地址空间的区间树,在属性变更时收集差异信息传递给底层执行操作。关键数据结构包括用户态接口drm_amdgpu_gem_svm、内核态属性结构amdgpu_svm_attrs,以及连接属性层和范围层的变更上下文attr_set_ctx。该实现支持多种内存属性和访问控制,包括位置偏好、访问权限、标志位设置等,为GPU内存管理提供了灵活的控制机制原创 2026-04-11 05:45:00 · 808 阅读 · 0 评论 -
AMDGPU 基于DRM SVM框架的新SVM功能实现 :attr_range 与 svm_range 的对应关系分析
AMD正在基于drm svm框架重构SVM实现,采用两层解耦架构:属性层(amdgpu_svm_attr_range)负责记录用户设置的属性元数据,映射层(amdgpu_svm_range)管理实际的GPU页表映射。两层通过N:M关系关联,具有不同的拆分标准(属性边界vs硬件约束)、生命周期和粒度。属性层按用户空间ioctl设置的范围划分,映射层则受chunk对齐、VMA边界等硬件约束影响。该POC验证版本展示了AMD在GPU驱动技术上的前沿探索,但实现细节可能仍有变动。原创 2026-03-25 19:02:57 · 928 阅读 · 0 评论 -
amdgpu SVM: TTM Eviction 流程分析
本文分析了AMDGPU中TTM eviction触发SVM range失效和恢复的完整流程,重点比较了xnack ON/OFF两种模式的处理机制。在xnack OFF模式下,系统通过MMU notifier回调触发失效流程,包括暂停GPU队列、清除GPU页表映射,并通过restore worker异步恢复映射。文章详细阐述了eviction触发链、锁顺序约束的解决方案,以及关键的数据结构和时序流程。对于xnack ON模式,则主要依赖GPU硬件处理页错误,具有不同的性能特点。原创 2026-06-07 05:00:00 · 161 阅读 · 0 评论 -
AMDGPU SVM Map Path 与 Migration 融合设计技术分析
AMD重构SVM实现采用drm svm框架,通过统一漏斗设计将四种映射路径收敛到核心函数。四种触发方式包括:GPU页错误(XNACK模式)、IOCTL属性变更(prefetch/迁移决策)、恢复工作线程(禁止迁移)、GC工作线程(munmap后重建)。该设计通过迁移模式枚举实现灵活的迁移策略,支持按需映射、属性变更触发迁移等功能,同时处理页面失效和重建场景。目前为POC验证版本,后续可能调整优化。原创 2026-04-14 05:00:00 · 598 阅读 · 0 评论 -
AMDGPU驱动中Doorbell与Event机制简要对比
摘要:AMDGpu驱动中,Doorbell和Event是两种异步通知机制。Doorbell是CPU→GPU的单向硬件通知,通过写MMIO寄存器触发GPU拉取任务,延迟低且无需内核介入,适用于队列任务提交。Event是GPU→CPU的双向同步通知,基于中断和内核事件对象,支持阻塞等待,用于任务完成或异常上报。核心区别在于方向、用途和实现方式:Doorbell侧重任务触发,Event侧重状态反馈。两者配合实现高效的任务下发与完成通知流程。原创 2026-03-26 23:41:11 · 1707 阅读 · 0 评论 -
drm_gpusvm设计更新速递:MM 层与设备(DMA)层的解耦
本文分析了 drm_gpusvm 框架的架构演进,从最初将 drm_device 和页管理耦合在单一结构中的设计,重构为分离的内存管理(MM)层与设备/DMA层。通过 Honglei Huang 的补丁系列,该框架实现了以下改进: 职责分离:将 MM 子系统关注的虚拟地址区间管理与设备侧的 DMA 映射状态解耦 生命周期独立:驱动可自主管理 drm_gpusvm_pages 的生命周期,支持多设备场景 状态标志拆分:区分 MM 状态(如 unmapped)和设备映射状态(如 has_dma_mapping)原创 2026-07-21 04:45:00 · 1004 阅读 · 0 评论 -
算力 GPU 驱动实战总结:SVM Eviction Fence 设计思想与实现细节
分析了GPU VRAM超量分配场景下SVM BO驱逐导致的STALE _mapcount问题。当VRAM被占满时,TTM内存管理器直接释放VRAM资源而不迁移ZONE_DEVICE页面,导致新分配的页面_mapcount状态异常。解决方案是在SVM BO的dma_resv上附加驱逐围栏,利用dma_fence的enable_signaling机制,在TTM驱逐前先将ZONE_DEVICE页面迁移回系统内存。原创 2026-04-09 19:56:38 · 854 阅读 · 0 评论 -
AMD KFD的BO设计分析系列8-7:AMDGPU PTE flags分析
本文梳理了AMDGPU驱动中PTE标志位的设计和使用。驱动层通过AMDGPU_PTE_*宏定义抽象的页表项属性(有效位、系统内存、缓存一致性、执行权限等),而硬件实现由各代gmc_v*模块负责转换。文章详细解析了主要宏的含义和使用场景,包括权限控制、内存类型选择及特殊功能位设置,并强调了性能优化和安全考量。调试时应同时关注驱动层标志构造和硬件层转换逻辑,修改时需使用抽象宏保持代码可移植性。该设计实现了硬件多样性抽象,统一了不同GPU架构的页表管理。原创 2026-04-23 15:32:12 · 434 阅读 · 0 评论 -
AMDGPU SVM Range Restore 机制
AMD正在重构SVM实现,采用drm svm框架处理GPU页表一致性。核心机制通过双队列系统协调MMU通知、垃圾回收和恢复工作:当GPU映射失效时,notifier回调暂停访问并将range加入队列;gc worker处理解映射并清除属性;restore worker负责重建失效映射。关键设计包括引用计数管理、VA合并优化和优先级队列(UNMAP优先于RESTORE),同时通过延迟调度平衡性能与实时性。该方案通过精细的状态跟踪和错误恢复机制,确保在迁移/保护等事件中维持GPU内存一致性,特别针对非xnack原创 2026-04-11 21:25:42 · 770 阅读 · 0 评论 -
AMDGPU SVM VRAM Migration 实现详解
AMD正在基于DRM SVM框架重构SVM实现,该框架即将广泛应用。本文分析了AMD开发者提交的POC验证版本的技术方案。该架构分为三层:AMDGPU SVM映射层、DRM Pagemap通用框架层和AMDGPU迁移后端硬件驱动层。系统涉及三个地址空间转换:VRAM分配器空间、HPA/PFN空间和GPU PTE地址空间。关键数据结构包括设备级迁移基础设施amdgpu_pagemap、迁移临时BO包装器amdgpu_svm_bo等。该方案通过地址空间转换实现VRAM迁移功能,目前仍处于POC阶段,设计可能变更原创 2026-04-14 05:00:00 · 775 阅读 · 0 评论
分享