Rookie HPC

About

Docs

Tools

Tests

MPI_THREAD_MULTIPLE

Definition

MPI_THREAD_MULTIPLE represents a thread support level. It is used as part of the MPI_Init_thread initialisation. MPI_THREAD_MULTIPLE is the fourth level; it informs MPI that the application is multithreaded, that any thread may issue MPI calls and that different threads may issue MPI calls at the same time. Other thread support levels are, in order, MPI_THREAD_SINGLE, MPI_THREAD_FUNNELED and MPI_THREAD_SERIALIZED.

Example

Copy

Feedback

#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>

/**
 * @brief Illustrates how to initialise the MPI environment with multithreading
 * support and ask for the MPI_THREAD_MULTIPLE level.
 * @details This application initialised MPI and asks for the 
 * MPI_THREAD_MULTIPLE thread support level. It then compares it with the
 * thread support level provided by the MPI implementation.
 **/
int main(int argc, char* argv[])
{
    // Initilialise MPI and ask for thread support
    int provided;
    MPI_Init_thread(NULL, NULL, MPI_THREAD_MULTIPLE, &provided);
    if(provided < MPI_THREAD_MULTIPLE)
    {
        printf("The threading support level is lesser than that demanded.\n");
        MPI_Abort(MPI_COMM_WORLD, EXIT_FAILURE);
    }
    else
    {
        printf("The threading support level corresponds to that demanded.\n");
    }

    // Tell MPI to shut down.
    MPI_Finalize();

    return EXIT_SUCCESS;
}