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.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.