VectorWare logra ejecutar Rust SIMD sobre la GPU

Fuentes: VectorWare runs Rust portable SIMD on the GPU

VectorWare ha anunciado que su toolchain permite ejecutar código Rust escrito con la API portable de SIMD (core::simd) directamente sobre la GPU, sin requerir anotaciones específicas de GPU en el código fuente. La compañía describe la técnica como una novedad sin precedentes que aprovecha el modelo de ejecución SIMT de las GPUs: un warp de 32 carriles se trata como una unidad vectorial ancha, de modo que un Simd se compila en una única instrucción de warp en la que cada carril opera con su propio elemento.

El mapeo se apoya en una observación clave: un warp es una unidad vectorial con carriles direccionables individualmente. Las operaciones elementales (suma, multiplicación, comparación) las ejecuta la GPU de forma nativa; las reducciones horizontales (reduce_sum, reduce_max) se implementan con instrucciones de warp shuffle; las máscaras (Mask) y métodos como any y all se traducen a instrucciones vote y ballot de CUDA; y las permutaciones entre carriles (simd_swizzle, rotaciones) reutilizan los mismos shuffles que ya emplea la programación GPU tradicional.

El avance completa la jerarquía de paralelismo iniciada por VectorWare en trabajos previos, donde std::thread se mapea a un warp. Ahora, dentro de cada warp, core::simd controla los carriles exactamente igual que en una CPU x86-64 o Arm, lo que permite escribir aplicaciones GPU complejas en Rust con abstracciones familiares. La compañía señala como limitación la diferencia de anchura fija del hardware GPU (32 carriles en NVIDIA, 32 o 64 en AMD) frente a la N variable de los vectores SIMD en CPU, y trabaja en una representación intermedia en el sistema de tipos de Rust para gestionar la asignación de trabajo entre carriles cuando N no coincide con la anchura del warp.