프로젝트 소개

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 툴킷이 필요합니다.