KaMPIng: Flexible and (Near) Zero-Overhead C++ Bindings for MPI
<|reference_start|>KaMPIng: Flexible and (Near) Zero-Overhead C++ Bindings for MPI: 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 strong foundation for a future distributed standard library using multiple application benchmarks, ranging from text-book sorting algorithms to phylogenetic interference.<|reference_end|>
@article{uhl2024kamping:,
    title={KaMPIng: Flexible and (Near) Zero-Overhead C++ Bindings for MPI},
    author={Tim Niklas Uhl and Matthias Schimek and Lukas H"ubner and Demian
  Hespe and Florian Kurpicz and Christoph Stelz and Peter Sanders},
    journal={arXiv preprint arXiv:2404.05610},
    year={2024},
    doi={10.1109/SC41406.2024.00050},
    archivePrefix={arXiv},
    eprint={2404.05610},
    primaryClass={cs.DC}
}