Cálculos dispersos: nuevo método optimiza el rendimiento

Fuentes: Enabling Efficient Sparse Computations using Linear Algebra Aware Compilers

El cálculo eficiente con datos dispersos (sparse data) es crucial en muchas áreas científicas y de ingeniería, desde simulaciones físicas hasta aprendizaje automático. Sin embargo, optimizar el código para estas operaciones, especialmente en hardware diverso como diferentes GPUs, puede ser extremadamente complejo y laborioso. El proyecto LAPIS, desarrollado por Sandia National Laboratories y la Universidad de Utah, entre otros, aborda este desafío mediante un nuevo marco de compilación basado en MLIR (Multilevel Intermediate Representation).

MLIR es una infraestructura de compilación modular que permite a los desarrolladores expresar programas en un nivel de abstracción intermedio, facilitando las optimizaciones. LAPIS extiende MLIR con un componente clave llamado "Kokkos dialect". Kokkos es una biblioteca de abstracción de paralelismo que permite escribir código que puede ejecutarse en una variedad de arquitecturas (CPUs, GPUs, etc.) con mínimas modificaciones. El Kokkos dialect en LAPIS traduce el código de alto nivel a código C++ Kokkos específico para la arquitectura objetivo, simplificando enormemente el proceso de portabilidad.

Una innovación importante de LAPIS es el "partition dialect", diseñado para manejar datos dispersos distribuidos en múltiples nodos de memoria (arquitecturas distribuidas). Este dialect permite especificar cómo se divide el dato y cómo se comunican los diferentes nodos durante los cálculos, minimizando la latencia y maximizando el rendimiento. Además, LAPIS no solo se enfoca en la distribución, sino que también incorpora optimizaciones algorítmicas a nivel de álgebra lineal, algo difícil de lograr con los compiladores tradicionales. Esto implica reordenar operaciones y datos para reducir la cantidad de comunicación entre los nodos.

LAPIS ha demostrado ser útil en una variedad de aplicaciones, incluyendo álgebra lineal dispersa, kernels de grafos (para análisis de redes), y en el desarrollo de TenSQL, una solución de gestión de bases de datos basada en GraphBLAS. También se ha utilizado para crear kernels de isomorfismo y monomorfismo de subgrafos, demostrando su capacidad para mejorar el rendimiento en diferentes tipos de problemas. En resumen, LAPIS proporciona una plataforma poderosa para desarrollar aplicaciones de alto rendimiento que requieren cálculos con datos dispersos, ofreciendo productividad, portabilidad y optimización a un nivel de detalle que antes era difícil de alcanzar.