Eines
NVIDIA porta Rust a CUDA amb cuda-oxide i cutile-rs per a escriure kernels de GPU segurs en compilació
NVIDIA ha anunciat CUDA Rust, una iniciativa per a convertir Rust en un llenguatge de primera classe a l'hora de programar GPU. Dos projectes de codi obert de NVlabs cobreixen els dos models de programació de CUDA: cuda-oxide per als kernels SIMT i cutile-rs per als kernels basats en tiles (blocs). L'objectiu és traslladar les garanties de seguretat de memòria de Rust al terreny on més car surt un error: el codi que s'executa a la GPU.
Rep el resum diari d'IA
Cada matí, l'essencial de la intel·ligència artificial al teu correu, sense fum. Al dia amb la IA.
En subscriure-t'hi acceptes rebre el butlletí d'AI Informator. Pots donar-te de baixa quan vulguis.
En resum
- cuda-oxide compila kernels SIMT des del MIR de Rust passant per Pliron i LLVM fins a generar PTX, l'assemblador intermedi de les GPU de NVIDIA.
- cutile-rs compila en temps d'execució (JIT) kernels de tipus Tile a través de CUDA Tile IR i funciona sobre Rust estable 1.89 o superior.
- Tots dos projectes són de codi obert i procedeixen de NVlabs, la branca de recerca de NVIDIA.
- La proposta ataca el punt feble clàssic de CUDA C++: els errors de memòria i de concurrència que només es manifesten en execució.
Dos camins per a dos models de programació
CUDA no és un únic paradigma. El model SIMT (Single Instruction, Multiple Threads o instrucció única amb múltiples fils) és el clàssic: cada fil executa la mateixa instrucció sobre dades diferents i el programador raona a nivell de fil individual. Davant seu, el model basat en tiles (blocs de dades) raona a nivell de bloc complet i deixa que el compilador reparteixi la feina entre els fils.
cuda-oxide s'ocupa del primer. Pren el MIR (Mid-level Intermediate Representation o representació intermèdia de nivell mitjà) que genera el compilador mateix de Rust i el baixa fins a PTX (Parallel Thread Execution), el llenguatge assemblador virtual de les GPU de NVIDIA, recolzant-se en Pliron i en LLVM. cutile-rs cobreix el segon, compilant en temps d'execució mitjançant CUDA Tile IR.
La promesa és moure els errors del temps d'execució al de compilació
L'atractiu de Rust en aquest context no és sintàctic, sinó estructural. El seu sistema de propietat i préstecs (ownership i borrowing) verifica en compilació qui posseeix cada dada i qui la pot modificar, la qual cosa elimina d'arrel famílies senceres de fallades: accessos fora de rang, punters penjants i bona part de les condicions de cursa. A CUDA C++ aquestes mateixes fallades es manifesten com a resultats numèrics incorrectes o penjades intermitents, sovint dependents de l'ocupació de la GPU.
Depurar un kernel amb milers de fils concurrents és notòriament costós. Traslladar ni que sigui una part d'aquesta verificació al compilador canvia l'economia del desenvolupament en GPU, sobretot en codi d'infraestructura d'inferència i entrenament, on un error silenciós es pot propagar durant dies abans de detectar-se.
El moviment té lectura estratègica sobre el fossat de CUDA
CUDA fa gairebé dues dècades que és l'avantatge competitiu més sòlid de NVIDIA, i aquest avantatge se sosté sobre una base instal·lada de desenvolupadors de C++. Obrir la porta a Rust amplia aquest cercle cap a una comunitat que ha crescut amb força en sistemes, infraestructura i motors d'inferència, i que fins ara accedia a la GPU mitjançant embolcalls (bindings) sobre biblioteques de C.
El requisit de Rust estable 1.89 o superior en cutile-rs és un detall revelador: indica intenció d'ús en producció, no un experiment restringit a la cadena nocturna del compilador. Tot i així, convé temperar les expectatives. Un ecosistema de GPU no es construeix només amb un compilador, sinó amb biblioteques madures, eines de perfilatge i profunditat de documentació.
El que queda per comprovar
Les preguntes rellevants són de rendiment i de cobertura. Un kernel escrit en Rust haurà d'igualar el rendiment de l'equivalent en CUDA C++ perquè la migració compensi, i caldrà veure fins a quin punt les abstraccions segures de Rust obliguen a recórrer a blocs unsafe (codi no verificat) a les rutes crítiques.
També està per definir el grau d'integració amb la resta de la pila: cuBLAS, cuDNN, NCCL i les eines de perfilatge com Nsight. Pel fet de tractar-se de projectes de NVlabs i no de productes amb suport comercial, el que és prudent és tractar-los avui com una aposta primerenca i no com una alternativa a punt per a substituir la cadena d'eines establerta.
Conclusió
CUDA Rust no canvia el panorama de la nit al dia, però assenyala cap a on mira NVIDIA: cap a una programació de GPU on el compilador atrapi el que avui només apareix en execució, i cap a una comunitat de desenvolupadors que no passa necessàriament per C++. Si cuda-oxide i cutile-rs aconsegueixen un rendiment equiparable i una integració raonable amb les biblioteques existents, l'efecte a mitjà termini serà menys sorollós que un llançament de maquinari però més durador: menys errors silenciosos a la capa on s'executa la major part del còmput de la IA actual. La prova arribarà quan algú publiqui xifres comparatives de kernels reals.
Fonts primàries
Rep el resum diari d'IA
Cada matí, l'essencial de la intel·ligència artificial al teu correu, sense fum. Al dia amb la IA.
En subscriure-t'hi acceptes rebre el butlletí d'AI Informator. Pots donar-te de baixa quan vulguis.
Comentarios