Concepts in Practice: C++ MPI Bindings for the HPC Ecosystem. From a Standardizable Core to a Composable Interface

2026-06-08Distributed, Parallel, and Cluster Computing

Distributed, Parallel, and Cluster Computing
AI summary

The authors address the lack of official C++ MPI bindings by creating a new, well-structured C++20-based interface that works naturally with standard C++ containers and can be extended easily. They built a core layer that formalizes MPI data buffers and procedures using modern C++ concepts. On top of this, they developed KaMPIng-v2, a library that simplifies MPI programming with a syntax inspired by C++ ranges. They also show how their design supports GPU and performance-portability libraries like Kokkos and SYCL through lightweight adapters. Their work is available as a fully functional open-source implementation, demonstrating a practical improvement for C++ MPI programming.

MPIC++20 conceptsSTL containersKaMPIngKokkosSYCLThrustGPU adaptersperformance portabilityhigh-performance computing
Authors
Tim Niklas Uhl, Matthias Schimek, Daniel Brommer
Abstract
The official C++ MPI bindings were removed from the standard in 2008, leaving a gap that numerous third-party libraries have attempted to fill. However, existing wrappers typically cover only a limited subset of MPI or target specific use cases, falling short of a general-purpose solution. A recent conceptual paper proposed general design principles for modern C++ bindings based on C++20 concepts, without committing to a concrete interface. We present the first concrete realization of these principles in a layered architecture. At the foundation, we define a core layer: refined C++20 concepts formalizing the MPI standard's notion of data buffers, automatic mapping of standard C++ constructs, non-intrusive customization points for third-party types, and concept-based wrappers for MPI procedures. The result is a low-level native C++ MPI interface that works directly with STL containers, is highly extensible, and lends itself to standardization. Built on this core, we present KaMPIng-v2 -- a C++ MPI library offering the convenience and memory-safety of KaMPIng with composable, pipe-based syntax inspired by C++ ranges for efficient, boilerplate-free MPI programming. Finally, we demonstrate the core layer's broad applicability by designing lightweight adapters for GPU and performance-portability libraries, making the HPC ecosystem a first-class citizen in MPI. Kokkos views, Thrust device vectors, and SYCL buffers can be passed directly to MPI procedures, with adapter logic remaining self-contained. All contributions are backed by a fully functional open-source reference implementation, demonstrating the practical viability of the proposed design.