Open MPI logo

MPI_Init_thread(3) man page (version 1.3.4)

  |   Home   |   Support   |   FAQ   |  

« Return to documentation listing



NAME

       MPI_Init_thread - Initializes the MPI execution environment

SYNTAX


C Syntax

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

Fortran Syntax

       INCLUDE 'mpif.h'
       MPI_INIT(REQUIRED, PROVIDED, IERROR)
            INTEGER   REQUIRED, PROVIDED, IERROR

C++ Syntax

       #include <mpi.h>
       int MPI::Init_thread(int& argc, char**& argv, int required)
       int MPI::Init_thread(int required)

INPUT PARAMETERS

       argc      C/C++ only: Pointer to the number of arguments.

       argv      C/C++ only: Argument vector.

       required  Desired level of thread support (integer).

OUTPUT PARAMETERS

       provided  Available level of thread support (integer).

       IERROR    Fortran only: Error status (integer).

DESCRIPTION

       This  routine, or MPI_Init, must be called before any other MPI routine
       (apart from MPI_Initialized) is called. MPI can be initialized at  most
       once; subsequent calls to MPI_Init or MPI_Init_thread are erroneous.

       MPI_Init_thread,  as compared to MPI_Init, has a provision to request a
       certain level of thread support in required:

       MPI_THREAD_SINGLE       Only one thread will execute.

       MPI_THREAD_FUNNELED     If  the  process  is  multithreaded,  only  the
                               thread  that  called  MPI_Init_thread will make
                               MPI calls.

       MPI_THREAD_SERIALIZED   If  the  process  is  multithreaded,  only  one
                               thread will make MPI library calls at one time.

       MPI_THREAD_MULTIPLE     If  the  process  is  multithreaded,   multiple
                               threads  may  call MPI at once with no restric-
                               tions.

       modifies, interprets, nor distributes them:

            {
                 /* declare variables */
                 MPI_Init_thread(&argc, &argv, req, &prov);
                 /* parse arguments */
                 /* main program */
                 MPI_Finalize();
            }

NOTES

       The  Fortran  version  does  not  have provisions for argc and argv and
       takes only IERROR.

       It is the caller's responsibility to check the value of provided, as it
       may be less than what was requested in required.

       The  MPI  Standard  does  not  say  what  a  program  can  do before an
       MPI_Init_thread or after an MPI_Finalize. In the Open  MPI  implementa-
       tion, it should do as little as possible. In particular, avoid anything
       that changes the external state of the program, such as opening  files,
       reading standard input, or writing to standard output.

ERRORS

       Almost  all MPI routines return an error value; C routines as the value
       of the function and Fortran routines in the last  argument.  C++  func-
       tions  do  not  return  errors.  If the default error handler is set to
       MPI::ERRORS_THROW_EXCEPTIONS, then on error the C++ exception mechanism
       will be used to throw an MPI:Exception object.

       Before  the  error  value is returned, the current MPI error handler is
       called. By default, this error handler aborts the MPI job,  except  for
       I/O   function   errors.   The   error  handler  may  be  changed  with
       MPI_Comm_set_errhandler; the predefined error handler MPI_ERRORS_RETURN
       may  be  used  to cause error values to be returned. Note that MPI does
       not guarantee that an MPI program can continue past an error.

SEE ALSO

       MPI_Init
       MPI_Initialized
       MPI_Finalize

1.3.4                            Nov 11, 2009               MPI_Init_thread(3)

« Return to documentation listing