# MPI_Init_thread

Initialize the MPI execution environment

## Synopsis

    #include "mpi.h"
    int MPI_Init_thread(int *argc, char ***argv, int required, int *provided )

## Input Parameters

| argc | Pointer to the number of arguments
| argv | Pointer to the argument vector
| required | Level of desired thread support

## Output Parameter

provided
  Level of provided thread support

## Command line arguments

MPI specifies no command-line arguments but does allow an MPI implementation to make use of them. See `MPI_INIT` for a description of the command line arguments supported by `MPI_INIT` and `MPI_INIT_THREAD`.

## Notes

Note that the Fortran binding for this routine does not have the `argc` and `argv` arguments. (`MPI_INIT_THREAD(required, provided, ierror)`)

Currently, MPICH places the same restrictions on `MPI_INIT_THREAD` as on `MPI_INIT` (see the `MPI_INIT` man page). When MPICH fully supports MPI-2, this restriction will be removed (as requried by the MPI-2 standard).

## Signals used

The MPI standard requires that all signals used be documented. The MPICH implementation itself uses no signals, but some of the software that MPICH relies on may use some signals. The list below is partial and should be independantly checked if you (and any package that you use) depend on particular signals.

## IBM POE/MPL for SP2

SIGHUP, SIGINT, SIGQUIT, SIGFPE, SIGSEGV, SIGPIPE, SIGALRM, SIGTERM, SIGIO

## -mpedbg switch

SIGQUIT, SIGILL, SIGFPE, SIGBUS, SIGSEGV, SIGSYS

## Meiko CS2

SIGUSR2

## ch_p4 device

SIGUSR1

The ch_p4 device also catches SIGINT, SIGFPE, SIGBUS, and SIGSEGV; this helps the p4 device (and MPICH) more gracefully abort a failed program.

## Intel Paragon (ch_nx and nx device)

SIGUSR2

## Shared Memory (ch_shmem device)

SIGCHLD

Note that if you are using software that needs the same signals, you may find that there is no way to use that software with the MPI implementation. The signals that cause the most trouble for applications include `SIGIO`, `SIGALRM`, and `SIGPIPE`. For example, using `SIGIO` and `SIGPIPE` may prevent X11 routines from working.

## Errors

All MPI routines (except `MPI_Wtime` and `MPI_Wtick`) return an error value; C routines as the value of the function and Fortran routines in the last argument. Before the value is returned, the current MPI error handler is called. By default, this error handler aborts the MPI job. The error handler may be changed with `MPI_Errhandler_set`; the predefined error handler `MPI_ERRORS_RETURN` may be used to cause error values to be returned. Note that MPI does not guarentee that an MPI program can continue past an error.

MPI_SUCCESS
  No error; MPI routine completed successfully.

MPI_ERR_OTHER
  This error class is associated with an error code that indicates that an attempt was made to call `MPI_INIT` a second time. `MPI_INIT` may only be called once in a program.

Location:initthread.c