MPI_THREAD_SPLIT Programming Model
- Different threads of a process must not use the same communicator concurrently.
- Any request created in a thread must not be accessed by other threads, that is, any non-blocking operation must be completed, checked for completion, or probed in the same thread.
- Communication completion calls that imply operation progress such asMPI_Wait(),MPI_Test()being called from a thread don’t guarantee progress in other threads.
- Implicit model: both you and the MPI implementation know the logical thread number in advance via a deterministic thread number query routine of the threading runtime. The implicit model is only supported for OpenMP* runtimes viaomp_get_thread_num().
- Explicit model: you passthread_idas an integer value converted to a string to MPI by setting an MPI Info object (referred to as info key in this document) to a communicator. The keythread_idmust be used. This model fits task-based parallelism, where a task can be scheduled on any process thread.