#include "mpi.h"
#include
int main(argc,argv)
int argc;
char *argv[]; {
int numtasks, rank, dest, source_1, source_2, rc, tag=1;
double data1, data2, outdata, result;
MPI_Status Stat;
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD, &numtasks);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if (rank == 0) {
source_1 = 1;
source_2 = 2;
rc = MPI_Recv(&data1, 1, MPI_DOUBLE, source_1, tag, MPI_COMM_WORLD, &Stat);
rc = MPI_Recv(&data2, 1, MPI_DOUBLE, source_2, tag, MPI_COMM_WORLD, &Stat);
result = data1 + data2;
printf("Total result %lf: \n", result);
}
else if (rank == 1) {
dest = 0;
outdata = 10.0;
rc = MPI_Send(&outdata, 1, MPI_DOUBLE, dest, tag, MPI_COMM_WORLD);
}
else if (rank == 2) {
dest = 0;
outdata = 25.0;
rc = MPI_Send(&outdata, 1, MPI_DOUBLE, dest, tag, MPI_COMM_WORLD);
}
MPI_Finalize();
}
|