...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 = = MPI_THREAD_SINGLE, funneled = = MPI_THREAD_FUNNELED, serialized = = MPI_THREAD_SERIALIZED, multiple = = MPI_THREAD_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 ``funneled'' 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 ``serialized'').
multiple
Multiple thread may do MPI calls.
Multiple threads may call MPI, with no restrictions.