skip to main content
10.1145/3617651.3622992acmconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
research-article
Open access

Towards Safe HPC: Productivity and Performance via Rust Interfaces for a Distributed C++ Actors Library (Work in Progress)

Published: 19 October 2023 Publication History

Abstract

In this work-in-progress research paper, we make the case for using Rust to develop applications in the High Performance Computing (HPC) domain which is critically dependent on native C/C++ libraries. This work explores one example of Safe HPC via the design of a Rust interface to an existing distributed C++ Actors library. This existing library has been shown to deliver high performance to C++ developers of irregular Partitioned Global Address Space (PGAS) applications.
Our key contribution is a proof-of-concept framework to express parallel programs safe-ly in Rust (and potentially other languages/systems), along with a corresponding study of the problems solved by our runtime, the implementation challenges faced, and user productivity. We also conducted an early evaluation of our approach by converting C++ actor implementations of four applications taken from the Bale kernels to Rust Actors using our framework. Our results show that the productivity benefits of our approach are significant since our Rust-based approach helped catch bugs statically during application development, without degrading performance relative to the original C++ actor versions.

References

[1]
2019. Rust RFC: scoped_threads. https://rust-lang.github.io/rfcs/3151-scoped-threads.html [Accessed 1-Sep-2023]
[2]
Gul A. Agha. 1990. ACTORS - a model of concurrent computation in distributed systems. MIT Press. isbn:978-0-262-01092-4
[3]
Bill Carlson. [n. d.]. GitHub - wwc559/convey: A conveyor implementation for Rust — github.com. https://github.com/wwc559/convey [Accessed 30-Jun-2023]
[4]
Jason Devinney. 2023. Bale Applications. https://github.com/jdevinney/bale
[5]
Ryan Friese. [n. d.]. GitHub - pnnl/lamellar-runtime: Lamellar is an asynchronous tasking runtime for HPC systems developed in RUST — github.com. https://github.com/pnnl/lamellar-runtime [Accessed 30-Jun-2023]
[6]
Max Grossman. 2017. A Pluggable Framework for Composable HPC Scheduling Libraries. IEEE Computer Society, 723–732. https://doi.org/10.1109/IPDPSW.2017.13
[7]
Akihiro Hayashi, Sri Raj Paul, Youssef Elmougy, Jiawei Yang, and Vivek Sarkar. 2022. HClib Actor Documentation. https://hclib-actor.com/
[8]
Carl Hewitt. 1973. A Universal Modular ACTOR Formalism for Artificial Intelligence. In Proceedings of the 3rd International Joint Conference on Artificial Intelligence. Standford, CA, USA, August 20-23, 1973. William Kaufmann, 235–245.
[9]
Shams Mahmood Imam and Vivek Sarkar. 2014. Selectors: Actors with Multiple Guarded Mailboxes. ACM, 1–14. https://doi.org/10.1145/2687357.2687360
[10]
F. Miller Maley and Jason G. DeVinney. 2019. Conveyors for Streaming Many-To-Many Communication. In Workshop on Irregular Applications: Architectures and Algorithms, IA3 SC 2019. IEEE, 1–8. https://doi.org/10.1109/IA349570.2019.00007
[11]
Yuki Okushi. [n. d.]. GitHub - actix/actix: Actor framework for Rust. — github.com. https://github.com/actix/actix [Accessed 30-Jun-2023]
[12]
Sri Raj Paul, Akihiro Hayashi, Kun Chen, Youssef Elmougy, and Vivek Sarkar. 2023. A Fine-grained Asynchronous Bulk Synchronous parallelism model for PGAS applications. Journal of Computational Science, 69 (2023), 102014. issn:1877-7503 https://doi.org/10.1016/j.jocs.2023.102014
[13]
Joshua Yanovski, Hoang-Hai Dang, Ralf Jung, and Derek Dreyer. 2021. Ghostcell: separating permissions from data in rust. Proceedings of the ACM on Programming Languages, 5, ICFP (2021), 1–30.

Index Terms

  1. Towards Safe HPC: Productivity and Performance via Rust Interfaces for a Distributed C++ Actors Library (Work in Progress)

      Recommendations

      Comments

      Information & Contributors

      Information

      Published In

      cover image ACM Conferences
      MPLR 2023: Proceedings of the 20th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes
      October 2023
      184 pages
      ISBN:9798400703805
      DOI:10.1145/3617651
      • General Chair:
      • Rodrigo Bruno,
      • Program Chair:
      • Eliot Moss
      This work is licensed under a Creative Commons Attribution 4.0 International License.

      Sponsors

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      Published: 19 October 2023

      Permissions

      Request permissions for this article.

      Check for updates

      Author Tags

      1. Rust
      2. actors
      3. high performance computing
      4. unsafe annotations

      Qualifiers

      • Research-article

      Funding Sources

      • National Energy Re- search Scientific Computing Center (NERSC)

      Conference

      MPLR '23
      Sponsor:

      Upcoming Conference

      ISSTA '25

      Contributors

      Other Metrics

      Bibliometrics & Citations

      Bibliometrics

      Article Metrics

      • 0
        Total Citations
      • 401
        Total Downloads
      • Downloads (Last 12 months)323
      • Downloads (Last 6 weeks)24
      Reflects downloads up to 26 Dec 2024

      Other Metrics

      Citations

      View Options

      View options

      PDF

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader

      Login options

      Media

      Figures

      Other

      Tables

      Share

      Share

      Share this Publication link

      Share on social media