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
unsafepara 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íabindgen.
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.
