
NVIDIA 於 2026 年 9 月在官方技術部落格發表文章,介紹 CUDA Rust,提供兩條以 Rust 撰寫 GPU 核心的路線,並可直接原生編譯成 PTX,而非只在 Rust 主程式裡呼叫預先編譯好的核心。官方指出,CUDA C++ 與 CUDA Python 已是成熟,企業級的工具鏈,而 CUDA Rust 會在 2027 年及之後持續成長與成熟。[1]
背景:系統層早已轉向 Rust
文章指出,人工智能的系統層涵蓋推論引擎、服務基建,驅動程式與代理執行環境,隨著模型與技術不斷變匒而頻繁改動,其中越來越多以 Rust 撰寫,因為 Rust 能在編譯期捕捉整類錯誤,同時不犧牲效能。[1]
官方以自身產品為例:Nova Linux 驅動以 Rust 撰寫!NVIDIA Dynamo 以 Rust 核心為基礎,NVTX 亦提供 Rust 綁定。文章形容 GPU 核心是例外:可以從 Rust 啟動核心,但核心本身往往要用另一種語言撰寫;CUDA Rust 正是要補上這個缺口。[1]
兩條路線
官方把 Rust 的用法分為兩條路線,對應 CUDA 本身的兩條路線。[1]
第一條是 SIMT,即現時在 CUDA C++ 或 numba-cuda 所用的模型:開發者描述單一線程做甚麼,然後啟動數千個線程。對應的專案是 cuda-oxide,它提供自訂的 rustc 程式碼產生後端,把以 Rust 撰寫的 SIMT 式 GPU 核心直接編譯成 PTX,過程使用 Pliron 中介表示框架與 LLVM。官方指出 cuda-oxide 需要固定版本的 nightly 工具鏈與 LLVM,目前仍處於早期 alpha。[1]
第二條是 Tile,屬較新的程式設計模型,C++ 與 Python 亦有提供。所有這些前端都讓開發者描述「一塊 tile 的資料」覂要做甚麼,其餘交由 Tile IR 編譯器處理。對應專案是 cutile-rs,在穩定版 Rust 上實現以 tile 為基礎的 GPU 程式設計,由編譯器透過 CUDA Tile IR 即時編譯管理線程映射與記憶體佈局;它可在穩定版 Rust 1.89 或以上,配合 CUDA 13.3 使用,毋須自訂 LLVM。[1]
記憶體安全與生態採用
官方指出,兩個專案都在編譯期強制記憶體安全:cuda-oxide 使用 DisjointSlice 與啟動契約防止別名;cutile-rs 則以張量分割與所有權保證獨佔存取。[1]
採用情況方面,官方表示 cutile-rs 已在 crates.io 發布,並已用於 Hugging Face 的 Grout 推論引擎以及 mistral.rs;cuda-oxide 仍屬早期 alpha。[1][2]
官方建議
文章建議,選擇建構基礎時應先考慮 Tile,因為編譯器會決定 tile 如何對應到各架構,原始碼不需要寫入架構特定選擇;當需要該層控制,或想自行管理記憶體與線程時,才下降到 SIMT。[1]
官方亦指出,選擇哪種語言與選擇哪種模型是兩個獨立問題,應以現有技術棧最合適的 CUDA 介面炾準;這兩條 Rust 路線是為技術棧本身是 Rust 的情況而設,而團隊計劃支援語言之間的互相操作,令選擇前端不有鎖死開發者。[1]
參考資料
[1] NVIDIA 官方技術部落格 — Introducing CUDA Rust: Two Tracks for Writing GPU Kernels
[2] NVlabs — cutile-rs 專案儲存庫