1. 概述
hsaKmtAllocMemory 是 ROCm libhsakmt用户空间库中用于分配 GPU 相关内存的核心 API。它为上层 HSA runtime 和应用程序提供了统一的内存分配接口,支持多种内存类型(VRAM、系统内存、Scratch、DMA buffer等),并根据分配参数自动选择合适的分配策略和底层 aperture(地址空间管理器)。
本文将结合 memory.c 和 fmm.c 的源码,详细分析 hsaKmtAllocMemory 的实现原理、参数解析、分配流程、与 aperture 的关系、错误处理、典型场景、性能与安全机制。
2. API 原型与参数说明
2.1 参数原型
HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemory(
HSAuint32 PreferredNode,
HSAuint64 SizeInBytes,
HsaMemFlags MemFlags,
void **MemoryAddress);
-
PreferredNode:首选 NUMA 节点或 GPU 节点 ID,决定分配内存的物理位置。
-
SizeInBytes:分配的内存字节数,必须为页面大小
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



