NVIDIA 推出 CUDA Rust:用 cuda-oxide 与 cutile-rs 编写 GPU 内核

两个 NVlabs 开源项目原生编译 Rust GPU 内核,并借助所有权规则在编译期拦截别名错误。

Paylaş
NVIDIA 推出 CUDA Rust:用 cuda-oxide 与 cutile-rs 编写 GPU 内核

NVIDIA 宣布推出 CUDA Rust,目标是让 Rust 成为编写 GPU 内核(kernel)的一等语言。此前 Rust 代码虽然可以启动 CUDA 内核,但内核主体通常仍需用其他语言编写。两个 NVlabs 开源项目填补了这一空缺:面向 SIMT 模型的 cuda-oxide,以及面向较新 Tile 模型的 cutile-rs。两者都原生编译 Rust 内核,并利用 Rust 的所有权规则在编译期拒绝别名(aliasing)错误。

两种编程模型

SIMT 是 CUDA C++ 与 numba-cuda 使用的模型:描述单个线程做什么,然后启动数千个线程。Tile 则描述一块数据瓦片做什么,线程映射和内存布局交给 Tile IR 编译器处理。NVIDIA 建议优先使用 Tile,需要显式控制线程与内存时再用 SIMT。计划中的跨语言互操作意味着选择 Rust 不会把开发者挡在 C++ 或 Python 之外。

cuda-oxide 是一个定制的 rustc 代码生成后端,把 #[kernel] 函数经由 Rust MIR、社区项目 Pliron IR 和 LLVM IR 一路降到 PTX,其余部分交给标准后端。NVIDIA 在 Pliron 之上编写了 GPU 方言。运行要求较重:Linux、计算能力 8.0 及以上的 GPU、CUDA 12.x 或更新版本、带 libclang 的 clang,以及固定的 nightly-2026-04-03 工具链。

cutile-rs 的抽象层级更高。每个 tile 块把内核主体当作单个逻辑线程在一个子张量上执行一次,实际动用多少 GPU 线程由编译器决定。要求更轻:计算能力 8.0 及以上、CUDA 13.3、稳定版 Rust 1.89 或更新版本、Linux,无需 nightly 也无需定制 LLVM。

安全性主张

在 SIMT 一侧,输出缓冲区类型为 DisjointSlice<f32>,让每个线程独占自己的元素,越界访问返回 Option,从而变成一个可处理的分支。把输出缓冲区当作自身输入传入时,SIMT 侧报 E0502 错误,Tile 侧报 E0382 错误。NVIDIA 认为 cutile-rs 的保证更强,因为所有权会随张量跨越启动边界。Tile 不暴露共享内存和线程索引,而 cuda-oxide 中的共享内存目前仍需 unsafe。

cutile-rs 已发布在 crates.io,并被 Hugging Face 的 Grout 推理引擎和 mistral.rs 采用;cuda-oxide 处于早期 alpha。NVIDIA 表示两个项目均处于 alpha 阶段,尚未确认可用于生产环境。技术细节见 MarkTechPost 的报道。

Devamını oku

Liquid AI تطلق أكبر نماذج LFM2.5 المفتوحة لتشغيل الوكلاء على الأجهزة

Liquid AI تطلق أكبر نماذج LFM2.5 المفتوحة لتشغيل الوكلاء على الأجهزة

أطلقت Liquid AI نموذج LFM2.5-24B-A2B كنموذج مفتوح، ويضم 24 مليار معامل إجمالا لكنه يشغل نحو 2.5 مليار منها في كل خطوة. وبحسب النتائج التي نشرتها الشركة، يولد النموذج المدرب للوكلاء الذين يستخدمون الأدوات 184 رمزا في الثانية على Apple M5 Max.

GlobalFeed Editor tarafından