Skip to content

Releases: userchba/LibDDLA

LibDDLA v0.0.5

Choose a tag to compare

@userchba userchba released this 05 Sep 09:01

LibDDLA v0.0.5

C++17 distributed dense linear algebra library for GPUs (CUDA/HIP) and CPU, ScaLAPACK-style 2D block-cyclic APIs over MPI. This release covers 56 commits since v0.0.4 (2026-07-31 → 2026-09-04).

Highlights

  • New status-returning C API — every public entry point now returns ddlaStatus_t, with DDLA_CHECK macros and ddlaSetStream for stream ownership on the handle; ddla.h + ddla_handle_t.h are now the only public headers, and all others were moved into src/. (c633490, 352077f)
  • CPU backend support with unified DdlaBackend dispatch — the backend layer is now a template (gemm<Backend, T>, comm_traits.h) covering CPU (OpenBLAS), CUDA, and HIP, including an optional dual CPU+GPU build selectable per handle at runtime. (41c7ace, 83f844b, 691f1b1, c4ce301)
  • Leading-block sub-matrix support for the factor/solve/diag routines, plus expanded solve variants. (2c76bc3, d8d1181)
  • Automatic CI on two HPC clusters — every push now runs the CPU suite on HPC3 and a HIP/DCU (gfx906) 40-case suite on KSSG via GitHub Actions; the HPC3 GPU stage runs as parallel 4-GPU + 6-GPU jobs. (f9ae8f5, ffd0f6e)

New Features

  • ptrtrs gained side='R' (X*op(A)=B) support, and the solve family gained side/trans variants. (49f3164, d8d1181)
  • plapiv gained row/col pivoting direction support; head-location solves added. (d8d1181)
  • CPU random-number generation in random_generator (backend-agnostic matrix generation). (13deeab)
  • Benchmark suite scoped to POTRF paths. (300794b)

Bug Fixes

  • pposv was missing the row permutation of B when the pivot location is not -1. (a397609)
  • pgetrf_bpiv is now a standard LU factorization, and pgetrs_bpiv applies the column pivot in the correct direction. (829202f)
  • Comm/plapiv/pivot correctness fixes and general hardening. (6dd4bb3)
  • gemmVbatched/gemmVbatched2s now accept lowercase transpose modes. (79cf31c)
  • Public headers are self-contained via DDLA_VENDOR_* macros; private headers include the public header first and no longer redeclare default template/function arguments. (dfdaa6e, 0391b81, 165981d)
  • Stream sync before reading last_value in the ppotrf head-correction path.
  • MPI_CHECK in the CCL+TUNNEL build branches; int/status comparison fixes across tests. (33c29e0, c7c43cb)

Build System / Tooling

  • Unified backend dispatch with DdlaBackend templates; CPU/GPU backend reduction. (41c7ace, 691f1b1)
  • Unified comm interface in comm_traits.h; dead comm code removed. (c4ce301, a82ce35)
  • ROCm include dir added to the HIP build for CXX-language TUs. (9cf0cdf)
  • README updated to the current API and comm layer, including the dual CPU+GPU build documentation. (7852315)

CI

  • New GitHub Actions pipeline: HPC3 CPU validation + KSSG HIP/DCU validation (gfx906, DTK 25.04.4, RCCL) on every push to main/develop. (f9ae8f5)
  • HPC3 GPU validation split into 4-GPU (v100g32fat) + 6-GPU (v100m3) parallel jobs after chronic v100g32 congestion. (ffd0f6e)
  • SAI Apptainer GPU validation retired in favor of the KSSG HIP pipeline. (f9ae8f5)

Tests & Benchmarks

  • Test suite reorganized under ctest with cpu/gpu labels; 42 GPU cases + 5 CPU cases run per CI cycle; rank registration standardized (DDLA_TEST_NP). (22377a2, 6f3d566)

Full changelog: v0.0.4...develop (56 commits, 182 files changed, +11740/-3620 lines)

v0.0.4

Choose a tag to compare

@userchba userchba released this 30 Jul 05:18

LibDDLA v0.0.4

C++17 distributed dense linear algebra library for GPUs (CUDA/HIP), ScaLAPACK-style 2D block-cyclic APIs over MPI. This release covers 57 commits since v0.0.3 (2026-05-21 → 2026-07-27).

Highlights

  • Unified CUDA/HIP batched GEMM backend (gemmVbatched / gemmVbatched2s) — a new vendor-neutral vbatched GEMM implementation shared across CUDA and HIP, supporting all four scalar types (float, double, std::complex<float>, std::complex<double>) with the public std::complex ABI preserved and thrust::complex used only internally (explicit FMA, no MAGMA dependency at runtime). (7aa2c1c)
  • License changed from GPL to LGPL v3, with MAGMA's BSD-3-Clause license included under LICENSES/ for the vbatched-derived kernel configs. (717e8db, 7aa2c1c)
  • README rewritten with accurate prerequisites, CMake option table, and build instructions for both CUDA and HIP backends. (e3eaaff, 3cbb91d, e8156f0, 9c404ac)

New Features

  • Non-pivoting LU factorization/solve family: pgetrf_nopiv, pgetrs_nopiv, pgesv_nopiv, and a MAGMA-derived getrf_nopiv. (32c54aa, 568c88b)
  • Banded-pivot LU factorization: pgetrf_bpiv. (46cdab2)
  • ppotrf_bottom_right / potrf_bottom_right — Cholesky factorization variants operating on the bottom-right submatrix. (f95af64)
  • pdam — distributed matrix scale/absolute-value-max style operation on a submatrix. (a629247)
  • axpy interface. (7d8bdb4)
  • pgemm transpose support (transa/transb ≠ 'N') plus general submatrix and non-square (n×m) MPI process grid support; ppotrf gained an upper-triangle (uplo == 'U') implementation. (1603864, dff3d79)
  • Template-based random matrix generator, replacing the old non-generic implementation. (fa36e4f)
  • deviceGetDeviceCount interface added to the device connector layer. (5e7a751)

Performance

  • Improved pgetrf performance by optimizing the underlying pgetf2 panel factorization. (159da24, fdc6ce2, 0aac709)
  • pgemm performance improvements alongside the transpose/submatrix support work. (589e3f6)
  • Removed a redundant world-communicator barrier from the triangular-factorization (*trf) code paths. (f1f3295)

Bug Fixes

  • Fixed pgemm correctness bug affecting asynchronous communication. (0d576d4)
  • Fixed pgeadd bugs when transa/transb ≠ 'N', and a separate pgeadd/pswap bug fix with accompanying tests. (a8fc255, fc5fdaf)
  • Fixed a rectangular block-size bug in the transport-block code path, and a related transport-block bug. (79c666e, 09938c0)
  • Fixed a laswp interface bug caused by CUDA/HIP differences, and a broader CUDA/HIP interface-difference bug on GPU/DCU platforms. (a0297b4, e15c96f)
  • Fixed HIP-specific bug. (7b5c888)
  • Fixed *_CHECK macros not reporting the correct file/line location. (e4066eb)
  • Added zero-size malloc and null-pointer free protection across allocation call sites. (0a42afc)

Build System / Tooling

  • Renamed the ENABLE_* CMake/compile-definition family to DDLA_USE_* for clarity. (2870801, 5b8fbb5)
  • Switched the DCU (HIP) compiler from hipcc to g++. (b8f8340)
  • Updated HIP install/build scripts and CUDA/HIP install scripts. (91f4100, 2a6252b, ac6c76c, 2a118b9)
  • Removed bench_pzgemm.cpp from src/ (moved/superseded by other benchmark updates) and cleaned up a stray tmp folder. (422ce7d, 1ff5713)
  • Updated .gitignore. (c1a78dc)
  • Added, then later removed, AGENTS.md contributor-agent instructions (no longer tracked in this repo). (8c55e6c, 8c5aa17, 3ddde74, 7b07283)

Tests & Benchmarks

  • Added a large batch of new API-grid regression tests covering pgeadd, pgemm, pgesv/pgesv_nopiv, pgetf2(+panel), pgetrf(+_bpiv/_nopiv), pgetrs(+_nopiv), plapiv, pposv, ppotrf(+_bottom_right), ppotrs, pswap, ptran, ptrtrs, a subcommunicator LU test, and transport-block tests. (a5227e8, and the feature commits above)
  • Added test_gemm_vbatched.cpp, test_pdam.cpp, test_getrf_nopiv.cpp, test_pgesv_nopiv.cpp, test_pgetrf_bpiv.cpp, test_pgetrf_nopiv.cpp, test_random_generate.cpp, and Hermitian-positive pgemm tests.
  • Updated pgetrf/ptrtrs/ppotrf_bottom_right benchmark drivers, including a cusolverMp-based pzgetrf benchmark for CUDA 11.8. (5fe65ff, 5530d58, abb8250)
  • Removed stray printf debug output from the LU factorization files. (acaa3f7)

Full changelog: v0.0.3...main (57 commits, 165 files changed, +26453/-3759 lines)

Note on tag naming: existing tags are v0.0.0, 0.0.2 (no v prefix), v0.0.3. This release recommends tagging as v0.0.4 to stay consistent with the majority convention.

v0.0.3

Choose a tag to compare

@userchba userchba released this 21 May 11:36
f4e9406

we give some interface for science computation
PGEMM
PZGEMM

PZGETF2
PZGETRF
PZGETRS
PZGESV
PZLAPIV

PTRTRS
PZTRTRS

PPOTRF
PPOTRS
PPOSV

v0.0.2

Choose a tag to compare

@userchba userchba released this 20 Mar 06:54

we give some interface for science computation
PGEMM
PZGETF2
PZGETRF
PZGEMM
PZLAPIV
PZGETRS
PZGESV

LibDDLA

Choose a tag to compare

@userchba userchba released this 03 Feb 02:19

v0.0.0 the package have supported PZGETRF, PZTRTRS, PZGEMM, PZGETRS, PZLAPIV