The International Conference for High Performance Computing, Networking, Storage, and Analysis

Workshops Archive

On the Integration of Lightweight Tasks with MPI using the C++26 std::execution `Senders' API


Workshop: ExaMPI25: Workshop on Extreme Scale MPI

Authors: John Biddiscombe (ETH Zürich / Swiss National Supercomputing Centre (CSCS)); Mikael Simberg, Auriane Reverdell, Raffaele Solca, Alberto Invernizzi, and Rocco Meli (Swiss National Supercomputing Centre (CSCS)); and Joseph Schuchart (Innovative Computing Laboratory, University of Tennessee)

Abstract: Integrating asynchronous MPI messaging with tasking runtimes requires careful handling of request polling and dispatching of associated completions to participating threads. The new C++26 Senders (std::execution) library offers a flexible collection of interfaces and templates for schedulers, algorithms and adaptors to work with asynchronous functions—and it makes explicit the mechanism to transfer execution from one context to another—essential for high performance. We have implemented the major features of the Senders API in the pika tasking runtime and used them to wrap asynchronous MPI calls such that messaging operations become nodes in the execution graph with the same calling semantics as other operations. The API allows us to easily experiment with different methods of message scheduling and dispatching completions. We present insights from our implementation on how application performance is affected by design choices surrounding the placement, scheduling and execution of polling and completion tasks using Senders.


Back to ExaMPI25: Workshop on Extreme Scale MPI Archive Listing Back to Full Workshop Archive Listing