Rust SIMD en la GPU
Los desarrolladores de Rust están experimentando con llevar las abstracciones SIMD portátiles de Rust a las GPUs, con la idea de ejecutar bibliotecas existentes orientadas a CPU de forma eficiente en hardware gráfico sin reescribirlas en CUDA o en frameworks de ML especializados. Los comentaristas analizan cómo el IR propuesto, basado en traits y tipos, se mapea a los modelos de ejecución de GPU (warps, shuffles, barreras) y qué beneficios y limitaciones tiene frente a la programación SIMT tradicional y a los intrínsecos específicos de arquitectura. El hilo también aborda cuestiones más amplias como la madurez del ecosistema SIMD de Rust, los desafíos de un SIMD “realmente portátil” entre CPU y GPU, y cómo una startup podría abrir su stack de compilación mientras construye productos comerciales encima.
Objetivos y diseño del proyecto
- El trabajo busca permitir que bibliotecas de CPU existentes y sin modificar (incluido código que usa
core::simd) se ejecuten en GPUs. - Utiliza un IR fuertemente tipado con traits parametrizados por operaciones (reducciones, scans, shuffles, strip mining).
- La “forma” de ejecución se codifica en los tipos; combinaciones inválidas (por ejemplo, un ejecutor de warp con una barrera de dispositivo) se convierten en errores de compilación.
- El diseño usa constantes a nivel de tipo para patrones de shuffle y parámetros de strip-mining; se supone que detecta muchos patrones de uso incorrecto de GPU en tiempo de compilación.
- La intención es reutilizar abstracciones similares en CPU y GPU, no “reemplazar” las CPU.
Compilador, disponibilidad y modelo de negocio
- La implementación actualmente depende de un fork personalizado del compilador; todavía no es pública.
- El plan declarado: abrir el código del compilador y partes de la biblioteca estándar después del lanzamiento del producto; el negocio se apoya en productos construidos encima, no en la venta del compilador.
- Algunos comentaristas expresan frustración porque no se puede probar ahora ni hacer benchmarks.
Casos de uso frente a las pilas de ML existentes
- Escepticismo: si hay que usar un DSL de programación de arreglos (scan/gather/etc.), ¿por qué no usar simplemente Torch/TF/JAX/MLIR?
- Respuesta: esto aporta poco para cargas de trabajo de ML escritas a mano; el valor está en que bibliotecas generales de CPU obtengan aceleración GPU de forma transparente.
Discusión sobre GPU vs CPU y SIMD/SIMT
- Varias explicaciones de cómo los “núcleos” de GPU se mapean a lanes SIMD, warps/waves, grandes ficheros de registros y ocultación de latencia mediante muchos hilos residentes.
- Contraste: las CPU optimizan para baja latencia y caché/especulación complejas; las GPU para rendimiento y alto ancho de banda.
- Debate sobre la terminología: GPUs como SIMD vs SIMT; algunos enfatizan que son ISAs vectoriales bajo un modelo de programación de “hilos”.
Portable SIMD, Rust nightly y ecosistema
- El SIMD portátil de Rust es solo para nightly; algunos usuarios cambiaron a alternativas (por ejemplo,
fearless_simd) para compilaciones estables. - Opiniones divididas sobre el tiempo prolongado en nightly: algunos lo ven como una maduración prudente; otros se frustran de que utilidades “básicas” y métodos de slices/punteros sigan inestables durante años.
- Debate sobre portable SIMD:
- Crítica: la mayoría de los ejemplos eligen un ancho de vector fijo, lo que perjudica la verdadera portabilidad y la portabilidad del rendimiento.
- Contraargumento: es posible usar genéricos agnósticos al ancho; portable SIMD es un punto medio útil cuando la auto-vectorización no basta pero no hace falta afinado específico de ISA.
- Se reconoce que los anchos óptimos difieren por arquitectura y a veces por condiciones de ejecución; se discuten estrategias de selección mediante
cfg, multi-variantes o JIT. - Algunos sostienen que las ISAs SIMD difieren lo suficiente como para que solo un subconjunto de casos de uso pueda ser verdaderamente portátil; otros señalan que las matemáticas vectoriales/de matrices “triviales” ya cubren la mayoría de las necesidades prácticas.
Miscelánea
- Hay curiosidad sobre los dominios de aplicación objetivo, especialmente más allá de los LLMs; la tesis mencionada era que la mayoría de los dispositivos se envían con GPUs infrautilizadas.
- Se pide un benchmark concreto y competitivo (por ejemplo, radix sort); no se proporciona ninguno en el hilo (el impacto en rendimiento sigue sin estar claro).
- Hilos menores de meta sobre posibles comentarios de bots y sobre el interruptor de “pedantic mode” del blog para obtener más detalle técnico.