Skip to content

charan1994/Rust-MPI

Repository files navigation

MPI support in Rust

This repository contains basic code and some runtimes to test how well MPI is currently supported in Rust. The project uses rsmpi crate paired with the Intel oneAPI MPI.

The repository provides basic examples testing send-receive and all-to-all communication patterns for fixed-size messages. It also uses barriers to synchronize timing of the programs.

The development of the code was done using the Intel oneAPI HPC kit (version 2021.1.0). We provide definition to build a Singularity container, which can be deployed in an HPC center. Please refer to the comments in the definition file for more information.

The given examples do not use rsmpi, features such as user-operations and derive.

Content

The repository provides the following components:

  • Code for all-to-all performance test in Rust and C++ (all_to_all and all_to_all_cxx).
  • Code for point-to-point over the ring performance test in Rust and C++ (circle_pass and circle_pass_cxx).
  • Logs from SLURM jobs run at different configurations (logs).
  • Documents and jupyter notebook to compare the Rust and C++ runtimes, storage and other stats (reports).

Requirements

  1. Intel MPI compiler and related tools (either oneAPI or Intel-MPI based installs).
  2. Libfabric.
  3. Rust.
  4. Clang compiler for some Rust crates that are built from source.

Resources

References and credits

  • This repository is the work of student for a winter course of independent study under Dr. Jaroslaw Zola.
  • The work was conducted at the University at Buffalo.
  • The code was developed on a laptop, and the resulting containers were deployed and ran at scale under control of SLURM on the UB CCR HPC cluster.
  • The examples from the rsmpi GitHub repository were used for reference for syntax and general idea of working with MPI using Rust. The GitHub repository and links to the examples are listed in the resources above.

Things to do

  • Resolve the problems with using complete rsmpi crate when building Singularity image (currently, we get unexpected errors when building container, which do not manifest themselves when compiling the project outside of the container).

About

This is a project to test out various basic MPI communication patterns and check for support in Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors