Question: /** * You are required to modify the MPI code so that, instead of using MPI_Allgather, it uses the non-blocking send and receive messages. *

/**

* You are required to modify the MPI code so that, instead of using MPI_Allgather, it uses the non-blocking send and receive messages.

* This must be done without affecting correctness.

* */

//============================================================================

#include

#include

#include

#define N 16

int main(int argc, char *argv[]){

int rank, P;

int i, j;

int sbuff[N];

int* rbuff;

MPI_Init(&argc, &argv);

MPI_Comm_rank(MPI_COMM_WORLD, &rank);

MPI_Comm_size(MPI_COMM_WORLD, &P);

for(i=0; i

sbuff[i] = (i+rank+rand()) % 100; // random integer chosen from 0-99

if(rank==6)

for(i=0; i

printf("rank=%d,sbuff[%d]=%d ",rank,i,sbuff[i]);

rbuff = (int*) malloc(N*P*sizeof(int));

// You need to replace the MPI_Allgather with non-blocking MPI send and receive routines

MPI_Allgather(sbuff, N, MPI_INT, rbuff, N, MPI_INT, MPI_COMM_WORLD);

if(rank==0) // your solution is correct only if printed values are the same as above

for(i=N*6; i

printf("rank=%d,rbuff[%d]=%d ",rank,i,rbuff[i]);

MPI_Finalize();

return 0;

}

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!