Question: The following code: __________________ #include mpi.h #include #include #define MASTER 0 int main (int argc, char *argv[]) { int numtasks, taskid, len, partner, message; char

The following code:

__________________

#include "mpi.h" #include  #include  #define MASTER 0 int main (int argc, char *argv[]) { int numtasks, taskid, len, partner, message; char hostname[MPI_MAX_PROCESSOR_NAME]; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &taskid); MPI_Comm_size(MPI_COMM_WORLD, &numtasks); /* need an even number of tasks */ if (numtasks % 2 != 0) { if (taskid == MASTER) printf("Quitting. Need an even number of tasks: numtasks=%d ", numtasks); } else { if (taskid == MASTER) printf("MASTER: Number of MPI tasks is: %d ",numtasks); MPI_Get_processor_name(hostname, &len); printf ("Hello from task %d on %s! ", taskid, hostname); /* determine partner and then send/receive with partner */ if (taskid < numtasks/2) { partner = numtasks/2 + taskid; MPI_Send(&taskid, 1, MPI_INT, partner, 1, MPI_COMM_WORLD); MPI_Recv(&message, 1, MPI_INT, partner, 1, MPI_COMM_WORLD, &status); } else if (taskid >= numtasks/2) { partner = taskid - numtasks/2; MPI_Recv(&message, 1, MPI_INT, partner, 1, MPI_COMM_WORLD, &status); MPI_Send(&taskid, 1, MPI_INT, partner, 1, MPI_COMM_WORLD); } /* print partner info and exit*/ printf("Task %d is partner with %d ",taskid,message); } MPI_Finalize(); } 

__________________

TASKS:

1. What would happen if all send before receiving?

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!