MPI bindings for Rust

Hello fellow Rustaceans. I have recently been working on bindings of the Message Passing Interface (MPI, a message-passing style concurrency library often found on supercomputers) for Rust and feel ready to publish the current state of affairs. Here goes: rsmpi.

Unlike the existing projects rust_mpi and ompi-rust, rsmpi

  • tries to be portable between different MPI implementations. I currently use bindgen to create Rust declarations of functions and types of the MPI C binding and port constants / macros by hand. So far I have successfully tested this method against OpenMPI and MPICH.
  • uses traits a lot. Well, maybe I overdid it a bit.

At this stage, I would be happy for some feedback and maybe even contributions if there is any interest in focussing efforts (the current standard does have 868 pages after all).

2 Likes

Now also with hosted documentation.

Great, i'm just looking for such a binding. But after i tried your example, build failed probably because you forgot to commit it to crates.io

Oh, sorry about that. My plan was to deploy to crates.io from Travis-CI but I am still butting heads with the service. You can still pull in the dependency from GitHub:

[dependencies.mpi]
git = "https://github.com/bsteinb/rsmpi.git"

I have changed the README to describe this mode of use.

This is pretty interesting. I'd love to see higher-level libraries for distributed computing at some point. Your bindings should make it fairly straight-forward to build upon. I'm thinking about something akin to the Julia programming language, even though that requires a fair bit of tooling as well.

1 Like