Noah Daniels – HPC, parallelism, and MPI in Rust

When: Tuesday 9/30/25 5:00 pm
Where: Tyler 108 and Zoom
Abstract:
The Rust programming language was created when Graydon Hoare was frustrated with the elevator in his apartment building being out of order due to a Windows blue screen of death. In the decade since its 1.0 release, Rust has been the “most loved” programming language on StackOverflow for a number of years, and has gained a reputation for high performance (comparable to C), high productivity (comparable to Go) and correctness (comparable to Haskell). I have been using Rust in my research group (Algorithms for Big Data) for the past 5 years, and also have been teaching my undergraduate machine organization course in Rust (previously it was in C) for about as long.

In this interactive workshop, we will start with a brief introduction to Rust (just the basics) and then look at how to easily parallelize a computation across multiple cores using the excellent Rayon library. We will wrap up with multi-node distributed computation via an OpenMPI-compatible library. I’ll make all code we write available on my website.

Bio:
Prof. Daniels is an associate professor of computer science, with the majority of his research focused on algorithms for “big data” — essentially, sublinear-time algorithms for problems such as search or sequence alignment, trying to leverage the manifold structure of high-dimensional data. He did a postdoc in mathematics at MIT with Bonnie Berger and a Ph.D in computer science at Tufts University with Lenore Cowen, focused on problems in computational biology ranging from protein structure prediction to biological sequence analysis. More recently, he has also been interested in applying “manifold mapping” ideas to problems in astronomy, cybersecurity, and machine learning.

Registration (free): https://uri-edu.zoom.us/meeting/register/MkwG6eIZRn6eO4tplmr4Pw#/registration
There is an in person option as well.

Background resources, for those who want to get a leg up: https://www.rust-lang.org/learn

The Rayon parallelization library is documented here: https://docs.rs/rayon/latest/rayon/

The mpi library is documented here: https://docs.rs/mpi/latest/mpi/