Sobre el proyecto

LibDDLA es una biblioteca de plantillas C++17 diseñada para el álgebra lineal densa distribuida. Implementa APIs al estilo de ScaLAPACK utilizando una distribución de datos cíclica de bloques 2D a través de una rejilla de procesos MPI. La biblioteca admite múltiples backends, incluyendo CPU (vía OpenBLAS o BLAS del proveedor), CUDA y HIP, con la capacidad de construir una biblioteca dual CPU+GPU para selección en tiempo de ejecución. Las capacidades clave incluyen: - Operaciones BLAS distribuidas: `pgemm` (algoritmo SUMMA), `pgeadd`, `pdam` y `ptran`. - Factorización LU y Solucionadores: Incluye `pgetrf` (pivoteo parcial), `pgetrf_bpiv` (LU de bloques), `pgetrs` y el controlador `pgesv`. - Factorización de Cholesky: Admite `ppotrf`, `ppotrs` y `pposv` para tipos escalares float, double y complejos. - Modos de Comunicación: Admite colectivos directos de dispositivo vía NCCL/RCCL, tunelización GPU-CPU (D2H -> MPI -> H2D) o MPI compatible con GPU (GPU-aware MPI). - Gestión de Memoria: Proporciona los ayudantes `ddla_malloc` y `ddla_free` que se despachan al backend seleccionado. La biblioteca está diseñada para entornos de computación de alto rendimiento, requiriendo CMake 3.13+, una implementación de MPI (Open MPI o MPICH) y los kits de herramientas de GPU respectivos para compilaciones de CUDA o HIP.