这个项目能做什么

LibDDLA 是一个专为分布式稠密线性代数设计的 C++17 模板库。它在 MPI 进程网格上使用 2D 块循环数据分布实现了 ScaLAPACK 风格的 API。该库支持多种后端,包括 CPU(通过 OpenBLAS 或厂商 BLAS)、CUDA 和 HIP,并能够构建一个支持运行时选择的 CPU+GPU 双端库。 核心功能包括: - 分布式 BLAS 操作:`pgemm`(SUMMA 算法)、`pgeadd`、`pdam` 和 `ptran`。 - LU 分解与求解器:包括 `pgetrf`(部分主元)、`pgetrf_bpiv`(块 LU)、`pgetrs` 以及 `pgesv` 驱动程序。 - Cholesky 分解:支持针对 float、double 和复数标量类型的 `ppotrf`、`ppotrs` 和 `pposv`。 - 通信模式:支持通过 NCCL/RCCL 的直接设备集合通信、GPU-CPU 隧道(D2H -> MPI -> H2D)或 GPU-aware MPI。 - 内存管理:提供 `ddla_malloc` 和 `ddla_free` 辅助函数,用于调度至所选后端。 该库专为高性能计算环境设计,要求 CMake 3.13+、MPI 实现(Open MPI 或 MPICH)以及用于 CUDA 或 HIP 构建的相应 GPU 工具包。