Asynchronous programming models (APM) are gaining more and more traction, allowing applications to expose the available concurrency to a runtime system tasked with coordinating the execution. While MPI has long provided support for multi-threaded communication and non-blocking operations, it falls short of adequately supporting the asynchrony of separate but dependent parts of an application coupled by the start and completion of a communication operation. Correctly and efficiently handling MPI communication in differentAPMmodels is still a challenge. We have previously proposed an extension to the MPI standard providing operation completion notifications using callbacks, so-called MPI Continuations. This interface is flexible enough to accommodate a wide range of different APMs. In this paper, we discuss different variations of the callback signature and how to best pass data from the code starting the communication operation to the code reacting to its completion. We establish three requirements (efficiency, usability, safety) and evaluate different variations against them. Finally, we find that the current choice is not the best design in terms of both efficiency and safety and propose a simpler, possibly more efficient and safe interface. We also show how the transfer of information into the continuation callback can be largely automated using C++ lambda captures.
This is a preview of subscription content, access via your institution.
Unable to display preview. Download preview PDF.
Editors and Affiliations
Rights and permissions
© 2023 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
Cite this paper
Schuchart, J., Bosilca, G. (2023). MPI Continuations And How To Invoke Them. In: Resch, M.M., Gebert, J., Kobayashi, H., Bez, W. (eds) Sustained Simulation Performance 2021. WSSP 2021. Springer, Cham. https://doi.org/10.1007/978-3-031-18046-0_5
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-18045-3
Online ISBN: 978-3-031-18046-0
eBook Packages: Mathematics and StatisticsMathematics and Statistics (R0)