Work

Improving MPI Safety for Modern Languages

Year: 2023
Type: conference-paper
Abstract: A program or library is considered safe when it’s guaranteed that programmer error cannot cause undefined behavior. MPI, both the standard and its implementations, is not designed to be type or memory safe. The standard requires that types must match across point-to-point communications and that collective call arguments must be the same across all ranks; it is up to the user in most cases to avoid these errors, and if not caught, then program behavior is undefined. Existing research attempts to help application developers find these errors using profiling and debugging tools, but these do not focus on solving the problems of safety. These tools are usually designed to catch errors during development but safety errors can depend on the environment, hardware, and input values, thus they are likely to show up even during production runs. To properly bind and use MPI, many modern memory safe languages, such as Rust, have to carefully validate and check for these errors, making it hard to achieve the performance of languages like Fortran and C. Our work examines how to improve MPI safety, both type and memory safety, at the implementation level and within programming languages; in this way it is possible to ensure valid communication and safety whether in development or in production. Our work presents safe point-to-point messaging prototypes within an MPI implementation and as a UCX-based library written in the Rust programming language. These prototypes are both designed to catch point-to-point communication errors at runtime, specifically datatype mismatches. We analyze results from these prototypes to show that catching these types of errors can be done efficiently, both at the level of the language and the implementation.
Language: English
Open Access status: hybrid
OpenAlex ID: W4386917646
FWCI: 0.562
Cites: 19
Cited by: 3
Related to: 10