Do you use the MPI C++ bindings in real-world MPI applications?
I’m not talking about using the MPI C bindings in C++ MPI applications (e.g., using
MPI_Send() — a C binding). I’m talking about writing substantial C++ MPI applications that use the MPI C++ bindings (such as
Do you do that? Post a comment below and let me know.
The reason that I ask is because there is some confusion in the MPI Forum as to exactly how many people use the MPI C++ bindings — and whether we should un-deprecate the MPI C++ bindings.
Specifically, during the MPI-2.2 process, the MPI Forum put out a call asking if anyone was using the MPI C++ bindings. We could not find any sizable MPI applications that used the C++ bindings. Anecdotal / unsubstantiated evidence suggested that they were barely used (if at all) because C++ developers felt that the C++ bindings didn’t add enough C++ features to make them worthwhile. Hence, they just used the C bindings, or used a higher-level class library (like Boost.mpi).
Sidenote: higher level class libraries like Boost.mpi are great. I’m all in favor of them. Sadly, not all software is portable to all platforms — for example, Boost.mpi requires fairly advanced C++ compiler features which are not available on all modern HPC platforms. Bummer! For this (and other) reasons, the Forum has explicitly rejected standardizing such class libraries. Another good reason not to standardize them is that these class libraries add definitions and semantics above and beyond what is specified in the MPI documents. If we standardize these class libraries, we’d therefore be standardizing different behavior in different languages — it would effectively be a new standard. An explicit goal of the MPI specification is that, to the greatest extent possible, MPI should provide the same behavior in every language.
Because the Forum couldn’t find any C++ bindings users (and because of a few other reasons), the MPI C++ bindings were deprecated in MPI-2.2. They weren’t removed, mind you — just deprecated. “Deprecated” is a very specific term that means two things:
- The bindings might be removed in a future version of the MPI specification document.
- It also means that we won’t introduce C++ bindings for new MPI-3 functions.
When answering the following question, please remember that C++ MPI applications can use the C++ and/or C MPI bindings. Do you have any MPI applications that are both written in C++ and use the MPI C++ bindings?
AUTHOR’S NOTE: Per Jed Brown’s comments (see below), the rest of this blog entry contained an incorrect statistical analysis. I have removed the rest of this entry on May 20, 2010 and submitted a new entry with a corrected analysis. Thanks for keeping me honest, Jed!