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.
The repository provides the following components:
- Code for all-to-all performance test in Rust and C++ (
all_to_allandall_to_all_cxx). - Code for point-to-point over the ring performance test in Rust and C++ (
circle_passandcircle_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).
- Intel MPI compiler and related tools (either oneAPI or Intel-MPI based installs).
- Libfabric.
- Rust.
- Clang compiler for some Rust crates that are built from source.
- MPI standard introduction
- Rust basics and installation resources
- Singularity resources
- Rust mpi (rsmpi) GitHub page
- rsmpi documentation
- more rsmpi examples
- Intel oneAPI installation link
- 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.
- 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).