Rust 实现 GPU 卸载:便携安全且快速

GPU Offload in Rust: Portable, Safe, and Fast

Rust 实现 GPU 卸载:便携安全且快速

高性能 GPU 编程长期面临效率与内存安全的两难抉择。以往在 Rust 中利用其所有权模型保障主机 CPU 安全的同时,若要涉足大规模并行 GPU 环境,往往被迫依赖厂商锁定的 DSL 或退而求其次使用不安全的裸指针。这项研究提出了一种零开销、多厂商通用的 GPU 编译框架,直接构建于 Rust 编译器(rustc)和 LLVM 后端之上。通过利用 Rust 强大的类型系统、所有权机制及严格的别名保证(noalias),该框架高效管理并优化了数据转移。实验在 RAJAPerf 基准测试中显示,基于 rustc 的方案生成的 LLVM IR 具有竞争力,其 GPU 内核性能可与原生手优化的 CUDA 和 HIP C++ 基线相媲美,真正实现了跨厂商的便携、安全与高速。

高性能 GPU 编程传统上迫使人们在执行效率与内存安全之间做出妥协。
  1. whateverboat

    > 该模块正处于积极开发中。一旦合并入上游,它将允许 Rust 开发者在 GPU 上运行 Rust 代码。我们的目标是开发一个 Rust 风格的 GPU 编程接口,默认情况下既安全、便捷又足够快。这包括以高效的方式自动处理数据在 GPU 与主机之间的传输。我们(稍后)还将提供更高级、可能是不安全的接口,以允许更高程度的控制。

    我真的很欣赏为此付出的工作和努力。然而,这种方案此前在 C++ 配合 LLVM offload 时并未真正奏效。为什么它对 Rust 就能行得通呢?

  2. YuechenLi

    那么……为什么要绕道 LLVM,而不是让 MIR 直接针对 PTX/HIP C 呢?

    如果他们真的想要一个 Rust GPU 的厂商中立方案,那其实已经存在了:你通过 Vulkan 绑定编写 CPU 端代码(包括缓冲、分配、并发等),然后从 HLSL/GLSL/WGSL 等语言中消费 SPIR-V 格式的 compute kernel。就目前的状况而言,他们在这里使用 Rust 的方式,感觉更像是在把它当作 TypeScript 的类型/接口来用,而不是别的什么。

    再说一遍,大多数需要在 GPU 上执行的操作的大小在编译前就已经确定了,因此完全有可能在编译时静态分配内存,而不是费尽周折去编写一个本质上是为 GPU 计算设计的 Rust 风格 DSL。

  3. bicepjai

    我所有的代码都用 Rust 写,因为我就是个 Rustacean。在我许多自定义的 LLM 推理引擎项目中,最大的斗争始终围绕着绑定(bindings)。我不想维护和编写绑定;如果使用现有项目提供的绑定,我又得等所有者更新,或者 fork 出来自己维护,这真是个大麻烦。能在 GPU 上运行 Rust 核心代码听起来像是我第一天就会尝试的事情。向团队致敬,我会密切关注。

  4. Thomashuet

    这很有希望,但他们发布代码了吗?我在摘要里找不到任何东西。

  5. boywitharupee

    这主要是为了让异构工作负载的主机二进制文件自包含吗?

    另外,这看起来主要针对的是 HPC 受众?

同日更多故事

2026-08-17