Saved in:
Bibliographic Details
Main Authors: Uhl, Tim Niklas, Schimek, Matthias, Hübner, Lukas, Hespe, Demian, Kurpicz, Florian, Stelz, Christoph, Sanders, Peter
Format: Preprint
Published: 2024
Subjects:
Online Access:https://arxiv.org/abs/2404.05610
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1866929588181925888
author Uhl, Tim Niklas
Schimek, Matthias
Hübner, Lukas
Hespe, Demian
Kurpicz, Florian
Stelz, Christoph
Sanders, Peter
author_facet Uhl, Tim Niklas
Schimek, Matthias
Hübner, Lukas
Hespe, Demian
Kurpicz, Florian
Stelz, Christoph
Sanders, Peter
contents 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.
format Preprint
id arxiv_https___arxiv_org_abs_2404_05610
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle KaMPIng: Flexible and (Near) Zero-Overhead C++ Bindings for MPI
Uhl, Tim Niklas
Schimek, Matthias
Hübner, Lukas
Hespe, Demian
Kurpicz, Florian
Stelz, Christoph
Sanders, Peter
Distributed, Parallel, and Cluster Computing
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.
title KaMPIng: Flexible and (Near) Zero-Overhead C++ Bindings for MPI
topic Distributed, Parallel, and Cluster Computing
url https://arxiv.org/abs/2404.05610