{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,3,31]],"date-time":"2026-03-31T11:48:27Z","timestamp":1774957707979,"version":"3.50.1"},"publisher-location":"Cham","reference-count":27,"publisher":"Springer Nature Switzerland","isbn-type":[{"value":"9783032071934","type":"print"},{"value":"9783032071941","type":"electronic"}],"license":[{"start":{"date-parts":[[2025,10,15]],"date-time":"2025-10-15T00:00:00Z","timestamp":1760486400000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2025,10,15]],"date-time":"2025-10-15T00:00:00Z","timestamp":1760486400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2026]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>Since the C++ bindings were deleted in 2008, the Message Passing Interface (MPI) community has recently revived efforts in building high-level modern C++ interfaces. Such interfaces are either built to serve specific scientific application needs (with limited coverage to the underlying MPI functionality), or as an exercise in general-purpose programming model building, with the hope that bespoke interfaces can be broadly adopted to construct a variety of distributed-memory scientific applications. However, with the advent of modern C++-based heterogeneous programming models, GPUs and widespread Machine Learning (ML) usage in contemporary scientific computing, the role of prospective community-standardized high-level C++ interfaces to MPI is evolving. The success of such an interface clearly will depend on providing robust abstractions and features adhering to the generic programming principles that underpin the C++ programming language, without compromising on either performance or portability, the core principles upon which MPI was founded. However, there is a tension between idiomatic C++ handling of types and lifetimes and MPI\u2019s loose interpretation of object lifetimes\/ownership and insistence on maintaining global states.<\/jats:p>\n                  <jats:p>Instead of proposing \u201cyet another\u201d high-level C++ interface to MPI, overlooking or providing partial solutions to work around the key issues concerning the dissonance between MPI semantics and idiomatic C++, this paper focuses on the three fundamental aspects of a high-level interface: type system, object lifetimes, and communication buffers, while also identifying inconsistencies in the MPI specification. Presumptive solutions can be unrefined, and we hope the broader MPI and C++ communities will engage with us in productive exchange of ideas and concerns.<\/jats:p>","DOI":"10.1007\/978-3-032-07194-1_10","type":"book-chapter","created":{"date-parts":[[2025,10,14]],"date-time":"2025-10-14T18:07:14Z","timestamp":1760465234000},"page":"165-183","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":1,"title":["Concepts for\u00a0Designing Modern C++ Interfaces for\u00a0MPI"],"prefix":"10.1007","author":[{"ORCID":"https:\/\/orcid.org\/0009-0005-0768-4243","authenticated-orcid":false,"given":"C. Nicole","family":"Avans","sequence":"first","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0002-9718-7099","authenticated-orcid":false,"given":"Alfredo A.","family":"Correa","sequence":"additional","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0001-8758-7657","authenticated-orcid":false,"given":"Sayan","family":"Ghosh","sequence":"additional","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0009-0002-6402-9016","authenticated-orcid":false,"given":"Matthias","family":"Schimek","sequence":"additional","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0003-2041-7877","authenticated-orcid":false,"given":"Joseph","family":"Schuchart","sequence":"additional","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0001-5252-6600","authenticated-orcid":false,"given":"Anthony","family":"Skjellum","sequence":"additional","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0002-8210-8992","authenticated-orcid":false,"given":"Evan D.","family":"Suggs","sequence":"additional","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0001-9295-1388","authenticated-orcid":false,"given":"Tim Niklas","family":"Uhl","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2025,10,15]]},"reference":[{"issue":"12","key":"10_CR1","doi-asserted-by":"publisher","first-page":"7447","DOI":"10.1021\/acs.jctc.1c00562","volume":"17","author":"X Andrade","year":"2021","unstructured":"Andrade, X., et al.: Inq, a modern GPU-accelerated computational framework for (time-dependent) density functional theory. J. Chem. Theory Comput. 17(12), 7447\u20137467 (2021). https:\/\/doi.org\/10.1021\/acs.jctc.1c00562","journal-title":"J. Chem. Theory Comput."},{"key":"10_CR2","doi-asserted-by":"publisher","unstructured":"Avans, C.N., Ciesko, J., Pearson, C., Suggs, E.D., Olivier, S.L., Skjellum, A.: Performance Insights into Supporting Kokkos Views in the Kokkos Comm MPI Library. In: 2024 IEEE International Conference on Cluster Computing Workshops (CLUSTER Workshops), pp. 186\u2013187 (2024). https:\/\/doi.org\/10.1109\/CLUSTERWorkshops61563.2024.00051, https:\/\/github.com\/kokkos\/kokkos-comm","DOI":"10.1109\/CLUSTERWorkshops61563.2024.00051"},{"key":"10_CR3","unstructured":"Bauke, H.: MPL - a message passing library (2015). https:\/\/github.com\/rabauke\/mpl"},{"key":"10_CR4","doi-asserted-by":"publisher","unstructured":"Beni, M.S., Crisci, L., Cosenza, B.: EMPI: enhanced message passing interface in modern C++. In: 2023 IEEE\/ACM 23rd International Symposium on Cluster, Cloud and Internet Computing (CCGrid), pp. 141\u2013153 (2023). https:\/\/doi.org\/10.1109\/CCGrid57682.2023.00023","DOI":"10.1109\/CCGrid57682.2023.00023"},{"key":"10_CR5","unstructured":"Bienz, A., Schafer, D., Skjellum, A.: MPI advance : open-source message passing optimizations (2023). https:\/\/arxiv.org\/abs\/2309.07337"},{"issue":"3","key":"10_CR6","doi-asserted-by":"publisher","first-page":"244","DOI":"10.1177\/1094342013488238","volume":"27","author":"W Bland","year":"2013","unstructured":"Bland, W., Bouteiller, A., Herault, T., Bosilca, G., Dongarra, J.: Post-failure recovery of MPI communication capability: design and rationale. Int. J. High Perform. Comput. Appl. 27(3), 244\u2013254 (2013). https:\/\/doi.org\/10.1177\/1094342013488238","journal-title":"Int. J. High Perform. Comput. Appl."},{"key":"10_CR7","unstructured":"Correa, A.A.: B-MPI3 (2018). https:\/\/github.com\/LLNL\/b-mpi3"},{"key":"10_CR8","unstructured":"cppreference.com: Constraints - cppreference.com (2025). https:\/\/en.cppreference.com\/w\/cpp\/language\/constraints.html. Accessed 03 Apr 2025"},{"key":"10_CR9","unstructured":"Demiralp, A.C., Martin, P., Sakic, N., Kr\u00fcger, M., Gerrits, T.: A C++20 interface for MPI 4.0. CoRR abs\/2306.11840 (2023)"},{"key":"10_CR10","doi-asserted-by":"crossref","unstructured":"Ghosh, S., Alsobrooks, C., R\u00fcfenacht, M., Skjellum, A., Bangalore, P.V., Lumsdaine, A.: Towards modern C++ language support for MPI. In: 2021 Workshop on Exascale MPI (ExaMPI), pp. 27\u201335. IEEE (2021)","DOI":"10.1109\/ExaMPI54564.2021.00009"},{"key":"10_CR11","doi-asserted-by":"publisher","DOI":"10.1016\/j.future.2024.107502","volume":"163","author":"WF Godoy","year":"2025","unstructured":"Godoy, W.F., et al.: Software stewardship and advancement of a high-performance computing scientific application: Qmcpack. Futur. Gener. Comput. Syst. 163, 107502 (2025). https:\/\/doi.org\/10.1016\/j.future.2024.107502","journal-title":"Futur. Gener. Comput. Syst."},{"key":"10_CR12","unstructured":"Grant, W.S., Voorhies, R.: cereal \u2013 a C++11 library for serialization (2017). http:\/\/uscilab.github.io\/cereal\/"},{"key":"10_CR13","unstructured":"Gregor, D., Troyer, M.: Boost.MPI (2005\u20132007). https:\/\/www.boost.org\/doc\/libs\/1_84_0\/doc\/html\/mpi.html. version 1.84"},{"key":"10_CR14","unstructured":"Hammond, J.: Vapaa: a standalone implementation of the MPI fortran 2018 module (2023). https:\/\/github.com\/jeffhammond\/vapaa"},{"key":"10_CR15","doi-asserted-by":"publisher","unstructured":"Hammond, J., et al.: MPI application binary interface standardization. In: Proceedings of the 30th European MPI Users\u2019 Group Meeting. EUROMPI 2023, pp. 1\u201312. ACM (2023). https:\/\/doi.org\/10.1145\/3615318.3615319","DOI":"10.1145\/3615318.3615319"},{"key":"10_CR16","unstructured":"Message Passing Interface Forum: MPI: a message-passing interface standard (2009). https:\/\/www.mpi-forum.org\/docs\/mpi-2.2\/mpi22-report.pdf"},{"key":"10_CR17","unstructured":"Message Passing Interface Forum: MPI: A message-passing interface standard, version 2.2. Specification, MPI Forum (2009). http:\/\/www.mpi-forum.org\/docs\/mpi-2.2\/mpi22-report.pdf"},{"key":"10_CR18","unstructured":"Message Passing Interface Forum: Memory allocation kinds: A MPI side document (2024). https:\/\/www.mpi-forum.org\/docs\/sidedocs\/mem-alloc10.pdf"},{"key":"10_CR19","unstructured":"Message Passing Interface Forum: MPI: A Message-Passing Interface Standard Version 5.0 (2025). https:\/\/www.mpi-forum.org\/docs\/mpi-5.0\/mpi50-report.pdf"},{"key":"10_CR20","unstructured":"Polukhin, A.: Boost.pfr (2016). https:\/\/www.boost.org\/doc\/libs\/1_84_0\/doc\/html\/boost_pfr.html"},{"key":"10_CR21","unstructured":"Ramey, R.: Boost.Serialization (2002\u20132009). https:\/\/www.boost.org\/doc\/libs\/1_86_0\/libs\/serialization\/doc\/. version 1.86"},{"key":"10_CR22","unstructured":"Revzin, B., et al.: Reflection for C++26. Proposal P2996R5 P2996R5, ISO\/IEC JTC1\/SC22\/WG21 (2024). https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2024\/p2996r5.html"},{"key":"10_CR23","doi-asserted-by":"publisher","unstructured":"Skjellum, A., et al.: Object-oriented analysis and design of the message passing interface. Concurrency Comput. Pract. Experience 13(4), 245\u2013292 (2001). https:\/\/doi.org\/10.1002\/cpe.556, https:\/\/onlinelibrary.wiley.com\/doi\/abs\/10.1002\/cpe.556","DOI":"10.1002\/cpe.556"},{"key":"10_CR24","unstructured":"Steinbusch, B., Gaspar, A., Brown, J.: rsmpi - MPI bindings for rust (2015). https:\/\/github.com\/rsmpi\/rsmpi"},{"key":"10_CR25","unstructured":"Stroustrup, B.: The Design and Evolution of C++. Addison-Wesley (1994)"},{"key":"10_CR26","unstructured":"Stroustrup, B., Sutter, H., et\u00a0al.: C++ core guidelines (2024). https:\/\/isocpp.github.io\/CppCoreGuidelines\/CppCoreGuidelines.html"},{"key":"10_CR27","doi-asserted-by":"publisher","unstructured":"Uhl, T.N., et al.: Kamping: flexible and (near) zero-overhead C++ bindings for MPI. In: Proceedings of the International Conference for High Performance Computing, Networking, Storage, and Analysis, SC 2024, Atlanta, GA, USA, November 17-22, 2024, p.\u00a044. IEEE (2024). https:\/\/doi.org\/10.1109\/SC41406.2024.00050, https:\/\/dl.acm.org\/doi\/10.1109\/SC41406.2024.00050","DOI":"10.1109\/SC41406.2024.00050"}],"container-title":["Lecture Notes in Computer Science","Recent Advances in the Message Passing Interface"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-032-07194-1_10","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,3,31]],"date-time":"2026-03-31T10:53:40Z","timestamp":1774954420000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/978-3-032-07194-1_10"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,10,15]]},"ISBN":["9783032071934","9783032071941"],"references-count":27,"URL":"https:\/\/doi.org\/10.1007\/978-3-032-07194-1_10","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,10,15]]},"assertion":[{"value":"15 October 2025","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}}]}}