K-文化的一切——从回归到 K-美妆,发送到您的邮箱订阅邮件

METAL MEDIA

GPU Offload in Rust: Portable, Safe, and Fast

arXiv:2608.137592026-08-17

Rust编译器现在能自己生成GPU代码了,而且不用放弃内存安全

过去GPU编程只能在快但危险的CUDA/C++和安全但用不了GPU的Rust之间二选一。这篇论文把GPU卸载功能直接内置进Rust编译器(rustc)和LLVM,在保留Rust内存安全保证的同时,让代码能跑在NVIDIA和AMD的GPU上。用RAJAPerf基准测试实测显示,生成的GPU内核性能可以和手写的CUDA、HIP代码相媲美。

METAL MEDIA 解读图

Rust编译器现在能自己生成GPU代码了,而且不用放弃内存安全

  1. 01提供三种接口:面向普通用户的全自动数据传输、对接cuBLAS/rocBLAS等厂商库的接口、以及面向专家的手动内存控制接口,以应对不同场景需求
  2. 02提出名为Region的安全抽象,让多个GPU线程可以安全地同时写入同一数组的不同部分,无需使用unsafe代码,解决了Rust'同一时刻只能有一个可变引用'的限制在并行内核中的冲突
  3. 03设计了两阶段编译流程,把主机(CPU)和设备(GPU)的编译过程分开,避免CPU专属指令混入GPU代码,该流程直接集成进rustc和LLVM的Offload基础设施
  4. 04在AMD MI250X和NVIDIA H100/RTX等GPU上测试,单个内核的执行时间可与原生CUDA/HIP竞争,但整体程序运行时间因主机与设备间数据传输方式的差异,从比原生快32%到慢46%不等
  5. 05一个未经优化的简单实现在MI250X上比优化版本慢400多倍,说明论文提出的数据传输优化至关重要
这是 METAL MEDIA 制作的解读图,并非论文作者提供的原图。

他们做了什么

  1. 提供三种接口:面向普通用户的全自动数据传输、对接cuBLAS/rocBLAS等厂商库的接口、以及面向专家的手动内存控制接口,以应对不同场景需求
  2. 提出名为Region的安全抽象,让多个GPU线程可以安全地同时写入同一数组的不同部分,无需使用unsafe代码,解决了Rust'同一时刻只能有一个可变引用'的限制在并行内核中的冲突
  3. 设计了两阶段编译流程,把主机(CPU)和设备(GPU)的编译过程分开,避免CPU专属指令混入GPU代码,该流程直接集成进rustc和LLVM的Offload基础设施
  4. 在AMD MI250X和NVIDIA H100/RTX等GPU上测试,单个内核的执行时间可与原生CUDA/HIP竞争,但整体程序运行时间因主机与设备间数据传输方式的差异,从比原生快32%到慢46%不等
  5. 一个未经优化的简单实现在MI250X上比优化版本慢400多倍,说明论文提出的数据传输优化至关重要
Figure 1. Current three-pass implementation pipeline for Rust offloading.
host.o
.text / .rodata
.llvm.offloading
llvm_offload_entries

为什么重要

高性能计算和科学计算领域长期依赖C/C++/CUDA等内存不安全的语言,因为Rust此前难以高效对接GPU,这项工作打破了这种权衡。它让开发者可以用一套不绑定特定硬件厂商、又有安全检查的方式实现GPU加速,而不必被锁定在某个厂商的不安全API里。

本文术语

  • noalias · 告诉编译器某个指针不会与其他指针指向同一块内存的提示信息,有助于优化
  • MIR · Rust编译器内部使用的一种中间代码表示形式
  • LLVM Offload · LLVM中负责把计算任务从CPU转移到GPU执行的底层基础设施
  • RAJAPerf · 用于比较CPU/GPU性能的一套基准测试程序
  • unsafe代码块 · Rust中关闭编译器自动安全检查、由程序员自行承担风险的代码区域

论文原文摘要(英文)

arXivLabs is a framework that allows collaborators to develop and share new arXiv features directly on our website. Both individuals and organizations that work with arXivLabs have embraced and accepted our values of openness, community, excellence, and user data privacy. arXiv is committed to these values and only works with partners that adhere to them. Have an idea for a project that will add value for arXiv's community? Learn more about arXivLabs.

作者 · linggen

在 arXiv 阅读

最新论文

全部论文 →

METAL MEDIA 最新报道