Rust-ból fordít CUDA-ra a NVIDIA új cuda-oxide fordítója — közvetlenül PTX-et generál
A cuda-oxide 0.1-es verziója a Rust kódot közvetlenül PTX-re, a NVIDIA GPU-k számára használt assembly-szerű köztes reprezentációra fordítja, elkerülve a domain-specifikus nyelveket és a C/C++-t.

Kísérleti fordítóprogramot adott ki a NVIDIA AI kutatócsoportja, a cuda-oxide-ot, amellyel a fejlesztők szabványos Rust kódban írhatnak CUDA SIMT (Single Instruction, Multiple Threads) GPU-kerneleket — írja a MarkTechPost.
A projekt célja, hogy a CUDA programozási modellt és az eszközspecifikus utasításokat natívan, biztonságos Rust környezetben fejezze ki, hasonlóan a C++-ban írt __global__ függvényekhez.
A fordítási folyamat szíve
A cuda-oxide magja egy egyedi rustc kódgeneráló backend, amely a Rust fordítóban a gépikód-generálásért felelős réteg. Ahelyett, hogy natív CPU-kódot bocsátana ki, a rustc-codegen-cuda crate a fordítót a CodegenBackend::codegen_crate() belépési pontnál elfogja, és külön folyamatot futtat az eszközspecifikus kódhoz.
Részletek a fordítási folyamaton
A fordító Stable MIR-t használ, amely a Rust fordító belső részeinek hivatalos, verziózott és stabil API-ja, így biztosítva a kompatibilitást a nightly verziók közötti változásokkal. A Pliron, egy Rust-natív MLIR-szerű IR keretrendszer, a köztes szakaszokban kap szerepet, lehetővé téve a teljes fordító összeállítását cargo segítségével, C++ eszközlánc nélkül.
A cuda-oxide támogatja a Rust nyelv jelentős részhalmazát a GPU kernel függvényekben, beleértve a generikus függvényeket, a lezárásokat, a felhasználó által definiált struktúrákat és enumokat, valamint a mintafelismerést. A projekt jelenleg Linux-only, és Ubuntu 24.04-en tesztelték, Rust nightly, CUDA Toolkit 12.x+ és LLVM 21+ verziókat igényel, 2024. márciusban várható a következő frissítés.