New life for C++ in MPI

I recently received an interesting email from Heiko Bauke about a new C++-based message-passing library that he is working on called MPL.

His library aims to make a simple-to-use library that exploits the features available in modern C++ compliers — it’s not a simple 1:1 mapping of C-to-C++ bindings like the MPI 2.x C++ bindings were.

Heiko provides three blog entries about MPL:

Intro to MPL

Collective communications

Data types

In MPL, you see the obvious “comm.rank()” and “comm.size()” object abstractions that you would expect, but also some more interesting usage of templates, using the STL, and even some use of anonymous lambda functions. For example:

comm_world.reduce(mpl::min<pair_t>(), 0, v.data(), result.data(), layout);

Fun stuff!

MPL is a great example of layering the power of a native language on top of underlying MPI functionality. I.e., let app developers have the full power of their language, and let the library provide the pluming to get down to the native / system-level abstractions.