Introduction
The MPI_Bcast
primitive sends data stored in a buffer at the root to all other ranks in the communicator. The syntax is as follows:
int MPI_Bcast(void *buffer,
int count,
MPI_Datatype datatype,
int root,
MPI_Comm comm)
Connection to Modules
- This module is particularly useful for the communication module.
Files Required
Part 1: Broadcast with Send and Recv
In this exercise, we assume that there are $p\geq1$ ranks.
- Rank 0 will store in a buffer a value of 100.
- Rank 0 will send this value in the buffer to all other ranks in the communicator.
- Ranks in the range $[1, p-1]$ will receive the value send by rank 0.
- In this exercise, we will only use
MPI_Send
andMPI_Recv
. - To get started, use the file
broadcast_starter.c
.
Figure 1 shows an example with $p=5$ ranks.
A code snippet from broadcast_starter.c
is shown below. Write the code to send the buffer storing 100 at rank 0 to the other ranks.
int buffer;
//Initialize the value to be broadcast
if(my_rank==0)
{
buffer=100;
}
//Write code here
Part 2: Replacing Send/Recv with Bcast.
Using broadcast_starter.c
, write the same program as outlined above, except use MPI_Bcast
instead of MPI_Send
and MPI_Recv
.