
AMD 编译器工程师 Joseph Huber 是将《DOOM》移植到 ROCm + LLVM libc 上的 GPU 上运行的人,作为将标准 C/C++ 代码迁移到 GPU 上的一部分,最近还一直在寻求在 GPU 上支持 Flang/Fortran。这项正在进行的任务的最新进展是通过 LLVM libc 库为 GPU 上的内存分配支持实现高效的 malloc 支持。
Joseph Huber 将 GPU 上的高效 malloc 支持上游到上游 LLVM libc 中。他在 几天前提交的 commit 中解释说:
“这是在 GPU 上实现高效设备端 ‘malloc’ 的大补丁。这是第一个通道,稍后将进行许多改进。
该方案围绕使用全局引用计数指针来分发对动态创建和销毁的 slab 接口的访问。slab 只是一个大的 bitfield,每个 slab 有一个 bit。所有分配在 slab 中的大小都相同,因此不同大小的分配是通过不同的 slab 完成的。
因此,分配是搜索或为所需的 slab 创建一个 slab,保留空间,然后搜索空闲位。释放是清除位,然后释放空间。
此接口允许内存动态增长和收缩。未来的补丁将具有不同的模式,以允许快速的首次使用以及非 RPC 版本。
很高兴看到 AMD 正在进行的所有上游工作,以及允许更多未经修改的代码在 GPU 上运行的持续进展。
这些最新提交将在 9 月左右成为 LLVM 21 版本的一部分。
转自 AMD Upstreams Efficient Malloc Support On GPUs For LLVM libc – Phoronix
Linuxeden开源社区