Right level of thread safety
Hello, I have a multi-threaded MPI application. Actually, only two threads. The main thread does all kinds of MPI operations, the secondary thread, launched by std::thread does only MPI_Test, no other MPI operations. What is the required level of thread safety? According to https://www.mpich.org/static/docs/v3.1/www3/MPI_Init_thread.html MPI_THREAD_SINGLE Only one thread will execute. MPI_THREAD_FUNNELED The process may be multi-threaded, but only the main thread will make MPI calls (all MPI calls are funneled to the main thread). MPI_THREAD_SERIALIZED 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). MPI_THREAD_MULTIPLE Multiple threads may call MPI, with no restrictions. its THREAD_MULTIPLE, since I can not synchronize the main threads MPI calls and MPI_Test from the other thread. Is that perception correct? I am asking, because I think Test is a relatively small operations and probably read only and therefore maybe a lower thread safety level suffices. Thanks, Florian _______________________________________________ discuss mailing list [email protected] To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/discuss
participants (1)
-
Florian Lindner