MPI + Kokkos OpenMP

What it is. Distributed CPU hybrid: MPI between nodes/ranks, Kokkos OpenMP for the intra-rank multi-thread. This is the “full” CPU mode (all cores of all ranks).

Build. Both options at once, on a Kokkos OpenMP:

cmake -S . -B build-mpi-omp -DCMAKE_BUILD_TYPE=Release \
  -DPOPS_USE_MPI=ON -DPOPS_USE_KOKKOS=ON -DKokkos_ROOT="$KOKKOS_OPENMP_PREFIX"
cmake --build build-mpi-omp -j

Run.

OMP_NUM_THREADS=4 OMPI_MCA_rmaps_base_oversubscribe=true \
  ctest --test-dir build-mpi-omp --output-on-failure

Validation: ROMEO-manual (x64cpu node). This combination is not in CI (CI joins MPI with Kokkos Serial, but never MPI with Kokkos OpenMP). Validated by hand on the x64cpu node of ROMEO: 52/57 rank-invariant runs (bit-identical np=1/2/4, dmax=0 on the parity/AMR/Krylov observables). Caveat: 3 heavy distributed-MG tests (mpi_cutcell_multibox, mpi_amr_distributed_coarse, condensed_schur_source_stepper) are too slow at np>1 (exceed 600 s); performance pathology (small tiles + MPI halos, ~5-7x slowdown), not a deadlock nor a correctness bug. All pass at np=1.