...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::mpi::threading::level — specify the supported threading level.
// In header: <boost/mpi/environment.hpp> enum level { single, funneled, serialized, multiple };
Based on MPI 2 standard/8.7.3
single
Only one thread will execute.
funneled
Only main thread will do MPI calls.
The process may be multi-threaded, but only the main thread will make MPI calls (all MPI calls are `<lsquo></lsquo>funneled<rsquo></rsquo>' to the main thread).
serialized
Only one thread at the time do MPI calls.
The process may be multi-threaded, and multiple threads may make MPI calls, but only one at a time: MPI calls are not made concurrently from two distinct threads (all MPI calls are `<lsquo></lsquo>serialized<rsquo></rsquo>').
multiple
Multiple thread may do MPI calls.
Multiple threads may call MPI, with no restrictions.