On 13 February 2014 15:33, Matthias Troyer <troyer@phys.ethz.ch> wrote:
Hi,In orders to use MPI in a multi-threaded environment, even when only one thread uses MPI, you need to request the necessary level of thread support in the environment constructor. Then you'd an check whether your MPI implementation supports multi threading. Note that using MPI the way you do need not work even though it seems safe at first sight. One reason is that your MPI implementation might use threads internally to support, e.g. nonblocking calls and those threads might not be compatible with your threads.MatthiasSo in my case, as I have a main thread that doesn't call MPI, and another purposely created user thread to call MPI lib, the mode is MPI_THREAD_FUNNELLED ?as boost 1.54 doesn't have the level in the enviroment ctor, I need to explicitly call the underlying MPI::Init_thread(MPI_THREAD_FUNNELED).once I move to 1.55, I'll use the env ctor.You need MPI_THREAD_SERIALIZED since it is not the main thread which is doing the MPI communication. Be sure to check whether that level is actually supported.Matthias
_______________________________________________
Boost-mpi mailing list
Boost-mpi@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-mpi