Rookie HPC

About

Docs

Tools

Tests

MPI_THREAD_FUNNELED

Definition

MPI_THREAD_FUNNELED represents a thread support level. It is used as part of the MPI_Init_thread initialisation. MPI_THREAD_FUNNELED is the second level; it informs MPI that the application is multithreaded, however all MPI calls will be issued from the master thread only. Other thread support levels are, in order, MPI_THREAD_SINGLE, MPI_THREAD_SERIALIZED and MPI_THREAD_MULTIPLE.

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_FUNNELED level.
 * @details This application initialised MPI and asks for the 
 * MPI_THREAD_FUNNELED 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_FUNNELED, &provided);
    if(provided < MPI_THREAD_FUNNELED)
    {
        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;
}