KaMPIng: Flexible and (Near) Zero-Overhead C++ Bindings for MPI
Tim Niklas Uhl, Matthias Schimek, Lukas H\"ubner, Demian, Hespe, Florian Kurpicz, Christoph Stelz, Peter Sanders

TL;DR
KaMPIng introduces flexible, high-level C++ bindings for MPI that enable rapid development, safety, and near-zero overhead by leveraging template metaprogramming, facilitating easier high-performance distributed computing.
Contribution
The paper presents novel C++ MPI bindings that support all abstraction levels, infer parameters, and ensure safety with minimal overhead using template metaprogramming.
Findings
Supports all MPI abstraction levels with C++ bindings.
Achieves near-zero overhead through compile-time code generation.
Demonstrates effectiveness with diverse application benchmarks.
Abstract
The Message-Passing Interface (MPI) and C++ form the backbone of high-performance computing, but MPI only provides C and Fortran bindings. While this offers great language interoperability, high-level programming languages like C++ make software development quicker and less error-prone. We propose novel C++ language bindings that cover all abstraction levels from low-level MPI calls to convenient STL-style bindings, where most parameters are inferred from a small subset of parameters, by bringing named parameters to C++. This enables rapid prototyping and fine-tuning runtime behavior and memory management. A flexible type system and additional safety guarantees help to prevent programming errors. By exploiting C++'s template metaprogramming capabilities, this has (near) zero overhead, as only required code paths are generated at compile time. We demonstrate that our library is a…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Advanced Data Storage Technologies · Distributed systems and fault tolerance
