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

πŸ“… 2026-06-08
πŸ“ˆ Citations: 0
✨ Influential: 0
πŸ“„ PDF
πŸ€– AI Summary
Since the official C++ MPI binding was deprecated in 2008, modern C++ has lacked a standardized, general-purpose interface to MPI. This work addresses this gap by proposing a layered architecture grounded in C++20 concepts, introducing standardizable core abstractions and implementing them in the KaMPIng-v2 libraryβ€”the first complete realization of concept-based design principles for MPI in C++. The library supports non-intrusive customization points, automatic mapping of STL containers, and a composable pipeline syntax for communication operations. It seamlessly integrates with major HPC ecosystem components such as Kokkos, Thrust, and SYCL, enabling direct passing of their data structures to MPI calls. This integration substantially reduces boilerplate code while enhancing memory safety and performance portability across diverse hardware platforms.
πŸ“ 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.
Problem

Research questions and friction points this paper is trying to address.

MPI
C++ bindings
HPC
standardization
interoperability
Innovation

Methods, ideas, or system contributions that make the work stand out.

C++20 Concepts
MPI bindings
composable interface
performance portability
HPC ecosystem
πŸ”Ž Similar Papers
No similar papers found.