MPI_Bcast(3)                       Open MPI                       MPI_Bcast(3)



NAME
       MPI_Bcast - Broadcasts a message from the process with rank root to all
       other processes of the group.


SYNTAX
C Syntax
       #include <mpi.h>
       int MPI_Bcast(void *buffer, int count, MPI_Datatype datatype,
            int root, MPI_Comm comm)


Fortran Syntax
       INCLUDE 'mpif.h'
       MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
            <type>    BUFFER(*)
            INTEGER   COUNT, DATATYPE, ROOT, COMM, IERROR


C++ Syntax
       #include <mpi.h>
       void MPI::Comm::Bcast(void* buffer, int count,
            const MPI::Datatype& datatype, int root) const = 0


INPUT/OUTPUT PARAMETERS
       buffer    Starting address of buffer (choice).

       count     Number of entries in buffer (integer).

       datatype  Data type of buffer (handle).

       root      Rank of broadcast root (integer).

       comm      Communicator (handle).


OUTPUT PARAMETER
       IERROR    Fortran only: Error status (integer).


DESCRIPTION
       MPI_Bcast broadcasts a message from the process with rank root to all
       processes of the group, itself included. It is called by all members of
       group using the same arguments for comm, root. On return, the contents
       of root's communication buffer has been copied to all processes.

       General, derived datatypes are allowed for datatype. The type signature
       of count, datatype on any process must be equal to the type signature
       of count, datatype at the root. This implies that the amount of data
       sent must be equal to the amount received, pairwise between each
       process and the root. MPI_Bcast and all other data-movement collective
       routines make this restriction. Distinct type maps between sender and
       receiver are still allowed.

       Example: Broadcast 100 ints from process 0 to every process in the
       group.
           MPI_Comm comm;
           int array[100];
           int root=0;
           ...
           MPI_Bcast( array, 100, MPI_INT, root, comm);

       As in many of our sample code fragments, we assume that some of the
       variables (such as comm in the example above) have been assigned
       appropriate values.

       WHEN COMMUNICATOR IS AN INTER-COMMUNICATOR

       When the communicator is an inter-communicator, the root process in the
       first group broadcasts data to all the processes in the second group.
       The first group defines the root process.  That process uses MPI_ROOT
       as the value of its root argument.  The remaining processes use
       MPI_PROC_NULL as the value of their root argument.  All processes in
       the second group use the rank of that root process in the first group
       as the value of their root argument.   The receive buffer arguments of
       the processes in the second group must be consistent with the send
       buffer argument of the root process in the first group.


NOTES
       This function does not support the in-place option.





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++
       functions 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.




1.4.1                            Jan 14, 2010                     MPI_Bcast(3)
