Saved in:
| Main Authors: | , , , , , , |
|---|---|
| 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 |