Loading…

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 n...

Full description

Saved in:
Bibliographic Details
Published in:arXiv.org 2024-11
Main Authors: Tim Niklas Uhl, Schimek, Matthias, Hübner, Lukas, Hespe, Demian, Kurpicz, Florian, Stelz, Christoph, Sanders, Peter
Format: Article
Language:English
Subjects:
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
cited_by
cites
container_end_page
container_issue
container_start_page
container_title arXiv.org
container_volume
creator Tim Niklas Uhl
Schimek, Matthias
Hübner, Lukas
Hespe, Demian
Kurpicz, Florian
Stelz, Christoph
Sanders, Peter
description 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.
doi_str_mv 10.48550/arxiv.2404.05610
format article
fullrecord <record><control><sourceid>proquest</sourceid><recordid>TN_cdi_proquest_journals_3034838998</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>3034838998</sourcerecordid><originalsourceid>FETCH-LOGICAL-a950-4edb5d7204e2c627dba74d73e1141a58168e663d7e36510abb6372d2372518bf3</originalsourceid><addsrcrecordid>eNotjc1Kw0AURgdBsNQ-gLsBN0pJvDN3_uJGNFgtVuuiKzdlxrmpKSHRSVv6-AZ0853VOR9jFwJy5bSGG5-O9SGXClQO2gg4YSOJKDKnpDxjk77fAoA0VmqNI3b34l_f5-3mls8aOtahIe7byK_eyKdr_kGpy5YHSl_kIy-nU_5Qt7FuNz2vusQH85ydVr7pafLPMVvNHlflc7ZYPs3L-0XmCw2Zohh0tBIUyU8jbQzeqmiRhFDCayeMI2MwWkKjBfgQDFoZ5TBauFDhmF3-Zb9T97OnfrfedvvUDo9rBFQOXVE4_AX2UkbI</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype><pqid>3034838998</pqid></control><display><type>article</type><title>KaMPIng: Flexible and (Near) Zero-Overhead C++ Bindings for MPI</title><source>Publicly Available Content Database</source><creator>Tim Niklas Uhl ; Schimek, Matthias ; Hübner, Lukas ; Hespe, Demian ; Kurpicz, Florian ; Stelz, Christoph ; Sanders, Peter</creator><creatorcontrib>Tim Niklas Uhl ; Schimek, Matthias ; Hübner, Lukas ; Hespe, Demian ; Kurpicz, Florian ; Stelz, Christoph ; Sanders, Peter</creatorcontrib><description>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.</description><identifier>EISSN: 2331-8422</identifier><identifier>DOI: 10.48550/arxiv.2404.05610</identifier><language>eng</language><publisher>Ithaca: Cornell University Library, arXiv.org</publisher><subject>C++ (programming language) ; High level languages ; Libraries ; Memory management ; Message passing ; Parameters ; Rapid prototyping ; Software development ; Sorting algorithms</subject><ispartof>arXiv.org, 2024-11</ispartof><rights>2024. This work is published under http://arxiv.org/licenses/nonexclusive-distrib/1.0/ (the “License”). Notwithstanding the ProQuest Terms and Conditions, you may use this content in accordance with the terms of the License.</rights><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><linktohtml>$$Uhttps://www.proquest.com/docview/3034838998?pq-origsite=primo$$EHTML$$P50$$Gproquest$$Hfree_for_read</linktohtml><link.rule.ids>780,784,25753,27925,37012,44590</link.rule.ids></links><search><creatorcontrib>Tim Niklas Uhl</creatorcontrib><creatorcontrib>Schimek, Matthias</creatorcontrib><creatorcontrib>Hübner, Lukas</creatorcontrib><creatorcontrib>Hespe, Demian</creatorcontrib><creatorcontrib>Kurpicz, Florian</creatorcontrib><creatorcontrib>Stelz, Christoph</creatorcontrib><creatorcontrib>Sanders, Peter</creatorcontrib><title>KaMPIng: Flexible and (Near) Zero-Overhead C++ Bindings for MPI</title><title>arXiv.org</title><description>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.</description><subject>C++ (programming language)</subject><subject>High level languages</subject><subject>Libraries</subject><subject>Memory management</subject><subject>Message passing</subject><subject>Parameters</subject><subject>Rapid prototyping</subject><subject>Software development</subject><subject>Sorting algorithms</subject><issn>2331-8422</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2024</creationdate><recordtype>article</recordtype><sourceid>PIMPY</sourceid><recordid>eNotjc1Kw0AURgdBsNQ-gLsBN0pJvDN3_uJGNFgtVuuiKzdlxrmpKSHRSVv6-AZ0853VOR9jFwJy5bSGG5-O9SGXClQO2gg4YSOJKDKnpDxjk77fAoA0VmqNI3b34l_f5-3mls8aOtahIe7byK_eyKdr_kGpy5YHSl_kIy-nU_5Qt7FuNz2vusQH85ydVr7pafLPMVvNHlflc7ZYPs3L-0XmCw2Zohh0tBIUyU8jbQzeqmiRhFDCayeMI2MwWkKjBfgQDFoZ5TBauFDhmF3-Zb9T97OnfrfedvvUDo9rBFQOXVE4_AX2UkbI</recordid><startdate>20241112</startdate><enddate>20241112</enddate><creator>Tim Niklas Uhl</creator><creator>Schimek, Matthias</creator><creator>Hübner, Lukas</creator><creator>Hespe, Demian</creator><creator>Kurpicz, Florian</creator><creator>Stelz, Christoph</creator><creator>Sanders, Peter</creator><general>Cornell University Library, arXiv.org</general><scope>8FE</scope><scope>8FG</scope><scope>ABJCF</scope><scope>ABUWG</scope><scope>AFKRA</scope><scope>AZQEC</scope><scope>BENPR</scope><scope>BGLVJ</scope><scope>CCPQU</scope><scope>DWQXO</scope><scope>HCIFZ</scope><scope>L6V</scope><scope>M7S</scope><scope>PIMPY</scope><scope>PQEST</scope><scope>PQQKQ</scope><scope>PQUKI</scope><scope>PRINS</scope><scope>PTHSS</scope></search><sort><creationdate>20241112</creationdate><title>KaMPIng: Flexible and (Near) Zero-Overhead C++ Bindings for MPI</title><author>Tim Niklas Uhl ; Schimek, Matthias ; Hübner, Lukas ; Hespe, Demian ; Kurpicz, Florian ; Stelz, Christoph ; Sanders, Peter</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-a950-4edb5d7204e2c627dba74d73e1141a58168e663d7e36510abb6372d2372518bf3</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2024</creationdate><topic>C++ (programming language)</topic><topic>High level languages</topic><topic>Libraries</topic><topic>Memory management</topic><topic>Message passing</topic><topic>Parameters</topic><topic>Rapid prototyping</topic><topic>Software development</topic><topic>Sorting algorithms</topic><toplevel>online_resources</toplevel><creatorcontrib>Tim Niklas Uhl</creatorcontrib><creatorcontrib>Schimek, Matthias</creatorcontrib><creatorcontrib>Hübner, Lukas</creatorcontrib><creatorcontrib>Hespe, Demian</creatorcontrib><creatorcontrib>Kurpicz, Florian</creatorcontrib><creatorcontrib>Stelz, Christoph</creatorcontrib><creatorcontrib>Sanders, Peter</creatorcontrib><collection>ProQuest SciTech Collection</collection><collection>ProQuest Technology Collection</collection><collection>Materials Science &amp; Engineering Collection</collection><collection>ProQuest Central (Alumni)</collection><collection>ProQuest Central</collection><collection>ProQuest Central Essentials</collection><collection>ProQuest Central</collection><collection>Technology Collection</collection><collection>ProQuest One Community College</collection><collection>ProQuest Central</collection><collection>SciTech Premium Collection (Proquest) (PQ_SDU_P3)</collection><collection>ProQuest Engineering Collection</collection><collection>Engineering Database</collection><collection>Publicly Available Content Database</collection><collection>ProQuest One Academic Eastern Edition (DO NOT USE)</collection><collection>ProQuest One Academic</collection><collection>ProQuest One Academic UKI Edition</collection><collection>ProQuest Central China</collection><collection>Engineering Collection</collection><jtitle>arXiv.org</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Tim Niklas Uhl</au><au>Schimek, Matthias</au><au>Hübner, Lukas</au><au>Hespe, Demian</au><au>Kurpicz, Florian</au><au>Stelz, Christoph</au><au>Sanders, Peter</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>KaMPIng: Flexible and (Near) Zero-Overhead C++ Bindings for MPI</atitle><jtitle>arXiv.org</jtitle><date>2024-11-12</date><risdate>2024</risdate><eissn>2331-8422</eissn><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 strong foundation for a future distributed standard library using multiple application benchmarks, ranging from text-book sorting algorithms to phylogenetic interference.</abstract><cop>Ithaca</cop><pub>Cornell University Library, arXiv.org</pub><doi>10.48550/arxiv.2404.05610</doi><oa>free_for_read</oa></addata></record>
fulltext fulltext
identifier EISSN: 2331-8422
ispartof arXiv.org, 2024-11
issn 2331-8422
language eng
recordid cdi_proquest_journals_3034838998
source Publicly Available Content Database
subjects C++ (programming language)
High level languages
Libraries
Memory management
Message passing
Parameters
Rapid prototyping
Software development
Sorting algorithms
title KaMPIng: Flexible and (Near) Zero-Overhead C++ Bindings for MPI
url http://sfxeu10.hosted.exlibrisgroup.com/loughborough?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-07T18%3A36%3A38IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-proquest&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=KaMPIng:%20Flexible%20and%20(Near)%20Zero-Overhead%20C++%20Bindings%20for%20MPI&rft.jtitle=arXiv.org&rft.au=Tim%20Niklas%20Uhl&rft.date=2024-11-12&rft.eissn=2331-8422&rft_id=info:doi/10.48550/arxiv.2404.05610&rft_dat=%3Cproquest%3E3034838998%3C/proquest%3E%3Cgrp_id%3Ecdi_FETCH-LOGICAL-a950-4edb5d7204e2c627dba74d73e1141a58168e663d7e36510abb6372d2372518bf3%3C/grp_id%3E%3Coa%3E%3C/oa%3E%3Curl%3E%3C/url%3E&rft_id=info:oai/&rft_pqid=3034838998&rft_id=info:pmid/&rfr_iscdi=true