#include
<stdio.h>
#include
<time.h>
#include
<string.h>
#include
"mpi.h"
int
main (int
argc, char
* argv[])
{ /* main */
const
int
maximum_message_length = 100;
const
int
master_rank = 0;
char
message[maximum_message_length+1];
MPI_Status status; /* Info about receive status */
int
my_rank; /* This process ID */
int
num_procs; /* Number of processes in run */
int
source; /* Process ID to receive from */
int
destination; /* Process ID to send to */
int
tag = 0; /* Message ID */
int
mpi_error; /* Error code for MPI calls */
int
icount ;
char
processor_name[MPI_MAX_PROCESSOR_NAME];
int
name_length;
mpi_error =MPI_Init(&argc, &argv);//will not deal with mpi_error except last one.
mpi_error =MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
mpi_error =MPI_Comm_size(MPI_COMM_WORLD, &num_procs);
if
(my_rank != master_rank) {
mpi_error=MPI_Get_processor_name(processor_name,&name_length);
sprintf(message, "Greetings from process #%d running on %s\n", my_rank, processor_name);
destination = master_rank;
mpi_error =MPI_Send(message, strlen(message) + 1, MPI_CHAR,destination, tag, MPI_COMM_WORLD);
} /* if (my_rank != master_rank) */
else
{
for
(source = 0; source < num_procs; source++) {
if
(source != master_rank) {
mpi_error =
MPI_Recv(message, maximum_message_length + 1, MPI_CHAR, source, tag, MPI_COMM_WORLD, &status);
printf( "%s \n", message);
}//if
}//for
} /* if (my_rank != master_rank)else */
mpi_error = MPI_Finalize();
if
(MPI_SUCCESS!=mpi_error)
return
mpi_error;
else
return
0;
} /* main */
/*----------------------------------------------------------------*/
Brought To You By CToHTML
http://www.cs.washington.edu/homes/zahorjan/homepage/Tools/index.htm
/*----------------------------------------------------------------*/