ROCm-libhsakmt udmabuf 显存分配的应用

发布时间:2026/10/23 4:45:59
ROCm-libhsakmt udmabuf 显存分配的应用
1. 概述udmabuf_allocation是 libhsakmt(ROCm Thunk 层)在 APU 平台下提供的一条替代显存分配路径。传统路径__fmm_allocate_device通过 KFD 的 VRAM 分配接口获取设备内存;而 udmabuf 路径借助 Linux 内核的 udmabuf 驱动,将一段绑定至指定 NUMA 节点的匿名共享内存封装为 dma-buf,再导入 KFD,使 GPU 通过 dma-buf 机制访问该内存。该设计的核心目标是在显存与系统内存物理统一的集成显卡上,以具备 NUMA 亲和性的系统内存充当设备内存,从而改善访问局部性。该函数定义于fmm.c,为文件内部静态函数,唯一调用点位于hsakmt_fmm_allocate_device。2. 启用条件与调用路径2.1 调用链用户 API 至 udmabuf 分配的完整调用链如下:hsaKmtAllocMemory / hsaKmtAllocMemoryAlign └─ hsaKmtAllocMemoryAlignCtx (memory.c) └─ hsakmt_fmm_allocate_device (fmm.c) ├─ [条件满足] → udmabuf_allocation └─ [条件不满足或失败回退] → __fmm_allocate_device + fmm