Об этом проекте

LibDDLA — это шаблонная библиотека C++17, разработанная для распределенной плотной линейной алгебры. Она реализует API в стиле ScaLAPACK, используя 2D-блочно-циклическое распределение данных по сетке процессов MPI. Библиотека поддерживает несколько бэкендов, включая CPU (через OpenBLAS или BLAS от вендора), CUDA и HIP, с возможностью сборки двойной библиотеки CPU+GPU для выбора в режиме реального времени. Ключевые возможности включают: - Распределенные операции BLAS: `pgemm` (алгоритм SUMMA), `pgeadd`, `pdam` и `ptran`. - LU-разложение и решатели: включает `pgetrf` (частичный выбор ведущего элемента), `pgetrf_bpiv` (блочное LU), `pgetrs` и драйвер `pgesv`. - Разложение Холецкого: поддержка `ppotrf`, `ppotrs` и `pposv` для типов float, double и комплексных скаляров. - Режимы связи: поддержка прямых коллективов устройств через NCCL/RCCL, туннелирования GPU-CPU (D2H -> MPI -> H2D) или GPU-aware MPI. - Управление памятью: предоставляет вспомогательные функции `ddla_malloc` и `ddla_free`, которые направляют запросы к выбранному бэкенду. Библиотека предназначена для высокопроизводительных вычислительных сред и требует CMake 3.13+, реализацию MPI (Open MPI или MPICH), а также соответствующие GPU-инструментарии для сборок CUDA или HIP.