Rong Chai Wang
15 de diciembre de 2024 02:19
Warp 1.5.0 introduce programación basada en mosaicos en Python, aprovechando cuBLASDx y cuFFTDx para operaciones eficientes de GPU, mejorando significativamente el rendimiento de la simulación y la computación científica.
La última versión de Warp 1.5.0 introduce primitivas de programación basadas en mosaicos que prometen mejorar la eficiencia y productividad de la GPU. Según NVIDIA, las nuevas herramientas, que aprovechan cuBLASDx y cuFFTDx, permiten una multiplicación de matrices eficiente y transformaciones de Fourier dentro de los núcleos de Python. Este avance es particularmente importante para la simulación acelerada y la computación científica.
Evolución de la programación de GPU
Durante la última década, el hardware GPU ha evolucionado desde un modelo de ejecución puramente SIMT (Instrucción única, subprocesos múltiples) a uno que depende en gran medida de operaciones cooperativas, mejorando así la eficiencia. A medida que las unidades matemáticas Tensor Core se convierten en una parte integral de la computación GPU, su programación eficiente es crucial. Las API tradicionales de alto nivel como BLAS, si bien ofrecen abstracciones amplias, a menudo carecen de integración y eficiencia al interactuar con los programas de usuario.
Programación basada en mosaicos en Warp
Los modelos de programación basados en mosaicos, como los introducidos en Warp 1.5.0, permiten a los desarrolladores expresar operaciones en mosaicos que múltiples subprocesos pueden ejecutar de manera cooperativa. Este modelo amplía la programación basada en núcleos de Warp para incluir operaciones basadas en mosaicos, lo que permite una transición perfecta de SIMT a la ejecución basada en mosaicos. Reduce la necesidad de indexación manual y gestión de memoria compartida al tiempo que admite la autodiferenciación para la formación.
Primitivas de mosaicos de deformación
Las nuevas primitivas de mosaicos Warp incluyen operaciones de construcción, carga/almacenamiento, álgebra lineal y mapeo/reducción. Estas primitivas amplían naturalmente el modelo de programación basado en núcleos existente de Warp. Los mosaicos se pueden construir en núcleos Warp utilizando operaciones de estilo NumPy, lo que permite una gestión eficiente de datos en bloques CUDA.
Multiplicación de matrices mejorada
Una de las principales ventajas de la programación basada en mosaicos es la capacidad de realizar multiplicaciones de matrices cooperativas. Se presenta Warp 1.5.0 wp.tile_matmul()
primitivo, que aprovecha cuBLASDx para enviar las instrucciones Tensor Core MMA apropiadas para un rendimiento óptimo. Este avance permite mejoras significativas en el rendimiento, alcanzando aproximadamente el 70-80 % del rendimiento de cuBLAS para matrices más grandes.
Estudios de casos y aplicaciones
La programación basada en mosaicos en Warp es muy beneficiosa para aplicaciones que requieren álgebra lineal densa, como la simulación robótica y el procesamiento de señales. Por ejemplo, en la simulación robótica, las primitivas de mosaicos de Warp pueden calcular de manera eficiente los productos matriciales necesarios para la dinámica directa, superando a los marcos tradicionales como Torch al reducir los viajes de ida y vuelta de la memoria global y los gastos generales de lanzamiento.
Desarrollos futuros
Las versiones futuras de Warp y MathDx incluirán soporte adicional para operadores de reducción por filas, creación de mosaicos a partir de funciones lambda, rendimiento mejorado de operaciones GEMM y nuevas primitivas de álgebra lineal. Estas mejoras continuarán optimizando la eficiencia de la programación de GPU.
Para más detalles, visite el sitio web oficial. Blog de NVIDIA.
Fuente de la imagen: Shutterstock