NVIDIA ha anunciado CUDA Rust, una iniciativa con la que busca llevar a Rust al núcleo de la programación de GPU. Hasta ahora, los desarrolladores podían lanzar kernels desde Rust, pero el código del kernel solía escribirse en otro lenguaje; CUDA Rust elimina esa barrera al permitir que los kernels se escriban directamente en Rust y se compilen de forma nativa a PTX, sin depender de envoltorios sobre código foráneo.
La propuesta se articula en dos vías que reflejan los dos modelos de programación de CUDA. La vía SIMT, materializada en el proyecto cuda-oxide, reproduce el enfoque clásico de CUDA C++: el programador describe lo que hace un hilo y lanza miles de ellos. Para ello, cuda-oxide actúa como un backend personalizado de rustc que intercepta la compilación, encamina las funciones marcadas con #[kernel] a través de MIR de Rust, el framework IR comunitario Pliron y LLVM IR hasta PTX, y deja el resto del código en el backend estándar. Requiere Linux, una GPU con compute capability 8.0 o superior, CUDA Toolkit 12.x o posterior, clang con libclang y una nightly fijada; el subcomando cargo oxide doctor verifica todo.
La vía Tile, implementada en cutile-rs, trabaja con un nivel de abstracción superior: el desarrollador opera sobre tiles (sub-tensores) y el compilador decide cómo mapearlos sobre la arquitectura física. El macro #[cutile::module] embebe el AST del kernel en el binario y lo compila JIT mediante CUDA Tile IR. En ambos casos, el objetivo es que la elección del lenguaje sea independiente del modelo de programación y que NVIDIA planee interoperabilidad entre Rust, C++ y Python.
El artículo incluye un ejemplo completo en cuda-oxide que suma 1.024 floats y muestra el código de host y dispositivo en un único archivo, junto con mecanismos de seguridad como DisjointSlice y #[launch_contract] para evitar condiciones de carrera y desajustes en la configuración de lanzamiento.
