このプロジェクトについて

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ビルド用の respective GPUツールキットが必要です。