skip to main content
10.1145/3624062.3624112acmotherconferencesArticle/Chapter ViewAbstractPublication PagesscConference Proceedingsconference-collections
research-article

Embedding Rust within Open MPI

Published:12 November 2023Publication History

ABSTRACT

The Message-Passing Interface (MPI) requires implementations that are able to adapt to new hardware and architectures while ensuring correctness and usability. The most widely used MPI implementations, however, are written in older programming languages that can lead to memory-unsafe code with poor isolation between modules, and complicated interfaces that can lead to serious bugs, all of which leads to difficulty in testing, debugging, and checking for correctness. In order to improve development of MPI implementations, we posit that new components, and key existing code segments, may benefit from being written in the Rust programming language. In this work we reimplement a core component of Open MPI used for intra-node communication in Rust and show that it achieves performance approaching that of the existing, highly optimized, C code, demonstrating that Rust is able to provide performance while allowing for better testing, memory safety guarantees, and correctness.

References

  1. Michael Blesel, Michael Kuhn, and Jannek Squar. 2021. heimdallr: Improving Compile Time Correctness Checking for Message Passing with Rust. In High Performance Computing, Heike Jagode, Hartwig Anzt, Hatem Ltaief, and Piotr Luszczek (Eds.). Springer International Publishing, Cham, 199–211.Google ScholarGoogle Scholar
  2. D. Buntinas, G. Mercier, and W. Gropp. 2006. Design and evaluation of Nemesis, a scalable, low-latency, message-passing communication subsystem. In Sixth IEEE International Symposium on Cluster Computing and the Grid (CCGRID’06), Vol. 1. 10 pp.–530. https://doi.org/10.1109/CCGRID.2006.31Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Simon Byrne, Lucas C. Wilcox, and Valentin Churavy. 2021. MPI.jl: Julia bindings for the Message Passing Interface. Proceedings of the JuliaCon Conferences 1, 1 (2021), 68. https://doi.org/10.21105/jcon.00068Google ScholarGoogle ScholarCross RefCross Ref
  4. Lei Chai, Albert Hartono, and Dhabaleswar K. Panda. 2006. Designing High Performance and Scalable MPI Intra-node Communication Support for Clusters. In 2006 IEEE International Conference on Cluster Computing. 1–10. https://doi.org/10.1109/CLUSTR.2006.311850Google ScholarGoogle ScholarCross RefCross Ref
  5. Joong-Yeon Cho, Hyun-Wook Jin, and Dukyun Nam. 2017. Enhanced Memory Management for Scalable MPI Intra-Node Communication on Many-Core Processor. In Proceedings of the 24th European MPI Users’ Group Meeting (Chicago, Illinois) (EuroMPI ’17). Association for Computing Machinery, New York, NY, USA, Article 10, 9 pages. https://doi.org/10.1145/3127024.3127035Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Rust Community. 2023. The Rust Programming Language. https://doc.rust-lang.org/stable/book/.Google ScholarGoogle Scholar
  7. Rust Community. 2023. The Rust Reference. https://doc.rust-lang.org/stable/reference/.Google ScholarGoogle Scholar
  8. Rust Community. 2023. The Rustonomicon. https://doc.rust-lang.org/nomicon/atomics.html.Google ScholarGoogle Scholar
  9. Manuel Costanzo, Enzo Rucci, Marcelo Naiouf, and Armando De Giusti. 2021. Performance vs Programming Effort between Rust and C on Multicore Architectures: Case Study in N-Body. In 2021 XLVII Latin American Computing Conference (CLEI). 1–10. https://doi.org/10.1109/CLEI53233.2021.9640225Google ScholarGoogle ScholarCross RefCross Ref
  10. Lisandro Dalcin. 2023. MPI for Python. https://mpi4py.readthedocs.io/en/stable/.Google ScholarGoogle Scholar
  11. Arthur Azevedo de Amorim, Catalin Hritcu, and Benjamin C. Pierce. 2018. The Meaning of Memory Safety. arxiv:1705.07354 [cs.PL]Google ScholarGoogle Scholar
  12. Linux Kernel Developers. 2023. perf: Linux profiling with performance counters. https://perf.wiki.kernel.org/index.php/Main_Page.Google ScholarGoogle Scholar
  13. RSMPI Developers. 2023. RSMPI. https://github.com/rsmpi/rsmpi.Google ScholarGoogle Scholar
  14. Mehmet Emre, Ryan Schroeder, Kyle Dewey, and Ben Hardekopf. 2021. Translating C to Safer Rust. Proc. ACM Program. Lang. 5, OOPSLA, Article 121 (oct 2021), 29 pages. https://doi.org/10.1145/3485498Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Rust for Linux Maintainers. 2023. Rust for Linux. https://rust-for-linux.com/.Google ScholarGoogle Scholar
  16. Viktor Franzén and Carl Östling. 2022. Evaluation of Rust for GPGPU high-performance computing. (2022).Google ScholarGoogle Scholar
  17. Edgar Gabriel, Graham E. Fagg, George Bosilca, Thara Angskun, Jack J. Dongarra, Jeffrey M. Squyres, Vishal Sahay, Prabhanjan Kambadur, Brian Barrett, Andrew Lumsdaine, Ralph H. Castain, David J. Daniel, Richard L. Graham, and Timothy S. Woodall. 2004. Open MPI: Goals, Concept, and Design of a Next Generation MPI Implementation. In Proceedings, 11th European PVM/MPI Users’ Group Meeting. Budapest, Hungary, 97–104.Google ScholarGoogle ScholarCross RefCross Ref
  18. Sayan Ghosh, Clara Alsobrooks, Martin Ruefenacht, Anthony Skjellum, Purushotham V. Bangalore, and Andrew Lumsdaine. 2021. Towards Modern C++ Language Support for MPI. In 2021 Workshop on Exascale MPI (ExaMPI). 27–35. https://doi.org/10.1109/ExaMPI54564.2021.00009Google ScholarGoogle ScholarCross RefCross Ref
  19. Richard L. Graham, Timothy S. Woodall, and Jeffrey M. Squyres. 2006. Open MPI: A Flexible High Performance MPI. In Parallel Processing and Applied Mathematics, Roman Wyrzykowski, Jack Dongarra, Norbert Meyer, and Jerzy Waśniewski (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 228–239.Google ScholarGoogle Scholar
  20. Brendan Gregg. 2021. Flame Graphs. https://www.brendangregg.com/flamegraphs.html.Google ScholarGoogle Scholar
  21. Dan Grossman, Greg Morrisett, Trevor Jim, Michael Hicks, Yanling Wang, and James Cheney. 2002. Region-Based Memory Management in Cyclone. SIGPLAN Not. 37, 5 (may 2002), 282–293. https://doi.org/10.1145/543552.512563Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Samuel K. Gutierrez, Nathan T. Hjelm, Manjunath Gorentla Venkata, and Richard L. Graham. 2012. Performance Evaluation of Open MPI on Cray XE/XK Systems. In 2012 IEEE 20th Annual Symposium on High-Performance Interconnects. 40–47. https://doi.org/10.1109/HOTI.2012.11Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Ralf Jung, Hoang-Hai Dang, Jeehoon Kang, and Derek Dreyer. 2019. Stacked Borrows: An Aliasing Model for Rust. Proc. ACM Program. Lang. 4, POPL, Article 41 (dec 2019), 32 pages. https://doi.org/10.1145/3371109Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. NOWLAB: Network Based Computing Lab. 2023. OSU Micro-Benchmarks 7.2. https://mvapich.cse.ohio-state.edu/benchmarks/.Google ScholarGoogle Scholar
  25. Linhan Li, Qianying Zhang, Shijun Zhao, Zhiping Shi, and Yong Guan. 2022. Design and Implementation of OOM Module based on Rust. In 2022 IEEE 22nd International Conference on Software Quality, Reliability, and Security Companion (QRS-C). 774–775. https://doi.org/10.1109/QRS-C57518.2022.00129Google ScholarGoogle ScholarCross RefCross Ref
  26. Ivan Lozano. 2021. Integrating Rust Into the Android Open Source Project. https://security.googleblog.com/2021/05/integrating-rust-into-android-open.html.Google ScholarGoogle Scholar
  27. Aravind Machiry, John Kastner, Matt McCutchen, Aaron Eline, Kyle Headley, and Michael Hicks. 2022. C to Checked C by 3c. Proc. ACM Program. Lang. 6, OOPSLA1, Article 78 (apr 2022), 29 pages. https://doi.org/10.1145/3527322Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Samantha Miller, Anirudh Kumar, Tanay Vakharia, Tom Anderson, Ang Chen, and Danyang Zhuo. 2023. Agile Development of Linux Schedulers with Ekiben. arxiv:2306.15076 [cs.OS]Google ScholarGoogle Scholar
  29. Samantha Miller, Kaiyuan Zhang, Mengqi Chen, Ryan Jennings, Ang Chen, Danyang Zhuo, and Tom Anderson. 2021. High Velocity Kernel File Systems with Bento. https://www.usenix.org/publications/loginonline/high-velocity-kernel-file-systems-bento.Google ScholarGoogle Scholar
  30. Yuvraj Singh. 2022. RUST Programming for HPC application. https://hps.vi4io.org/_media/teaching/summer_term_2022/nthpda_report_rust_for_hpc_by_yuvraj_singh.pdf. (2022).Google ScholarGoogle Scholar
  31. Michal Sudwoj. 2020-09-11. Rust programming language in the high-performance computing environment. Bachelor Thesis. ETH Zurich, Zurich. https://doi.org/10.3929/ethz-b-000474922Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. Embedding Rust within Open MPI

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in
      • Published in

        cover image ACM Other conferences
        SC-W '23: Proceedings of the SC '23 Workshops of The International Conference on High Performance Computing, Network, Storage, and Analysis
        November 2023
        2180 pages
        ISBN:9798400707858
        DOI:10.1145/3624062

        Copyright © 2023 ACM

        Publication rights licensed to ACM. ACM acknowledges that this contribution was authored or co-authored by an employee, contractor or affiliate of the United States government. As such, the Government retains a nonexclusive, royalty-free right to publish or reproduce this article, or to allow others to do so, for Government purposes only.

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 12 November 2023

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • research-article
        • Research
        • Refereed limited
      • Article Metrics

        • Downloads (Last 12 months)52
        • Downloads (Last 6 weeks)6

        Other Metrics

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader

      HTML Format

      View this article in HTML Format .

      View HTML Format