Un nuevo proyecto de NVIDIA Labs está mejorando significativamente las capacidades de usar Rust para desarrollar kernels CUDA en GPUs NVIDIA.

CUDA-Oxide 0.1 se publicó el jueves como el lanzamiento inaugural de este compilador experimental Rust-a-CUDA para escribir kernels SIMT de GPU de forma "safe(ish)" —segura(-ish), reconociendo que aún quedan bordes inseguros— usando el lenguaje Rust. CUDA-Oxide toma código Rust estándar y emite directamente al formato PTX de NVIDIA.

¿Qué hace exactamente CUDA-Oxide?

El proyecto está diseñado por ingenieros de NVIDIA para tres metas concretas: compilación de fuente única (single-source), abstracciones del lado del dispositivo y un pipeline de compilación nativo de Rust que se apoya en un back-end customizado del compilador llamado rusc.

A diferencia de proyectos comunitarios como Rust-CUDA o cust, que dependen de bindings al runtime de C++ y a menudo de unsafe extenso, CUDA-Oxide apunta a que el desarrollador escriba el kernel y el host code en el mismo archivo .rs y deje que el compilador haga la separación. El resultado es PTX que cualquier driver NVIDIA reciente (CUDA 12.x en adelante) puede ejecutar sobre tarjetas Pascal y posteriores.

Qué dice NVIDIA sobre el alcance del release

El equipo es claro respecto al estado del proyecto:

"cuda-oxide es un compilador experimental que demuestra cómo se pueden escribir kernels SIMT de CUDA de forma nativa en Rust puro, sin DSLs, sin bindings a otro lenguaje, y ponerlos a disposición de la comunidad Rust en general. El proyecto está en una etapa temprana (alfa) y en desarrollo activo: deberían esperar bugs, funcionalidades incompletas y rupturas de API mientras trabajamos para mejorarlo. Dicho eso, esperamos que lo prueben en su propio trabajo y ayuden a darle dirección compartiendo feedback sobre su experiencia."

¿Por qué importa? Comparativa con el ecosistema Rust-en-GPU

Hasta ahora, las opciones para escribir kernels CUDA desde Rust eran tres, y ninguna ideal:

  • Rust-CUDA / cust: bindings al runtime CUDA C, requiere unsafe para casi cualquier llamada al device.
  • rust-gpu (Embark Studios): apunta a SPIR-V y por extensión a Vulkan compute, no a PTX puro.
  • Wrapping manual con C++ FFI: el kernel se escribe en .cu, el host en .rs, y se cosen vía bindgen.

CUDA-Oxide es el primer intento serio de NVIDIA misma de cerrar esa brecha. Si el proyecto madura, abriría la puerta a que infraestructuras de IA escritas en Rust (tokio, candle, burn) llamen a kernels custom sin pasar por C++.

Quienes quieran probar la versión 0.1 inaugural pueden hacerlo desde el proyecto NVLabs en GitHub. El reportaje original aparece en Phoronix.