Backend matrix¶
adc_cpp compiles the same numerical code to several backends through a single
dispatch seam. The per-backend test coverage is maintained in a single document, which is the
source of truth: BACKEND_COVERAGE.md. This page summarizes its
structure; do not duplicate the detailed table here (it changes with every test added).
The backends¶
Backend |
Build |
Where it runs |
|---|---|---|
Kokkos Serial |
|
CI gate |
MPI + Kokkos Serial |
|
CI job MPI ( |
Kokkos OpenMP |
|
CI job |
Kokkos Cuda (GH200) |
Kokkos + |
ROMEO manual only (never in CI). |
MPI + Kokkos Cuda |
previous build + OpenMPI CUDA-aware |
ROMEO manual ( |
Important
CI never builds -DPOPS_USE_KOKKOS=ON -DKokkos_ENABLE_CUDA=ON. All GPU validation
(single-GPU Cuda or multi-GPU MPI) is done manually on the ROMEO supercomputer (GH200
node), not in CI. The GPU harnesses live in python/tests/gpu/ and are launched by
SBATCH. See GPU_RUNTIME_PORT.md and the
limitations page.
How to read the matrix¶
The table in BACKEND_COVERAGE.md cross-references each test (C++ ctest and Python) with the backends above. The legend distinguishes in particular:
build-and-test: REQUIRED gate on every PR; compiles in Kokkos Serial (C++ + Python module).
ci-full: runs in full mode (push
master, nightly, labeled PR), adds MPI + Kokkos Serial and Kokkos OpenMP.ROMEO: validated manually on GH200; the exact harness is cited in parentheses, with the numerical evidence (e.g.
dmax=0).self-skip: the test detects the absence of the backend and exits cleanly (exit 0).
?: not exercised; these cells are listed in the “Notable gaps” section of the source document.
Highlights¶
The Python tests only exercise Kokkos Serial: the
_popsmodule is built in CI in Kokkos Serial, without MPI or Cuda. No Python test covers MPI or Cuda.The FFT Poisson path runs under MPI via a box-slab remap (
RemappedFFTSolver, ADC-287): periodic, constant coefficient,Nydivisible byn_ranks(); a test checks parity withgeometric_mg. The directPoissonFFTSolverstays single-rank by design.The Kokkos Cuda and MPI + Kokkos Cuda columns are either
ROMEO(validated by hand), or?. The detail of the remaining GPU gaps is in the “Notable gaps” section of the source document.
For the numerical counts (ctest targets, MPI entries, Python tests) and the exhaustive list of gaps, refer directly to BACKEND_COVERAGE.md.