Kokkos SerialΒΆ

What it is. The reference build: Kokkos Serial (single-thread CPU via Kokkos::parallel_for), without MPI. comm.hpp answers rank 0 / 1 rank. It is the oracle: all the other backends are validated bit-for-bit (or to rounding) against it. Serial goes through Kokkos Serial, not through a hand-written C++ loop. This is the job that had caught an init regression (allocating a Fab before the lazy Kokkos init); the Kokkos Serial gate now plays that role on EVERY PR.

Build. You need a Kokkos installed with Kokkos_ENABLE_SERIAL=ON, then:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \
  -DPOPS_USE_KOKKOS=ON -DKokkos_ROOT="$KOKKOS_PREFIX"
cmake --build build -j

Run.

ctest --test-dir build --output-on-failure

Validation: CI (required gate of every PR). This is the build-and-test job (ubuntu-latest, Kokkos Serial), triggered on every pull_request. Covers the 109 non-MPI ctest targets plus the 60 Python tests (built via -DPOPS_BUILD_PYTHON=ON, _pops Kokkos Serial module). Status ci-fast in the matrix.