mpi program hangs at MPI_SEND

The name of the picture


mpi program hangs at MPI_SEND



I got the above mentioned error on running the following program in C. It uses the MPI library.


#include "mpi.h"
#include <stdio.h>
#include <stdlib.h>

int main (int argc, char *argv)
{
int numranks, rank, dest, tag, source, rc, count;
char inmsg, outmsg='x';
MPI_Status Stat;

MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD, &numranks);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
printf("Task %d starting...n",rank);

if (rank == 0) {
if (numranks > 2)
printf("Numranks=%d. Only 2 needed. Ignoring extra...n",numranks);
dest = rank + 1;
source = dest;
tag = rank;
rc = MPI_Send(&outmsg, 1, MPI_CHAR, dest, tag, MPI_COMM_WORLD);
printf("Sent to task %d...n",dest);
rc = MPI_Recv(&inmsg, 1, MPI_CHAR, source, tag, MPI_COMM_WORLD, &Stat);
printf("Received from task %d...n",source);
}
else if (rank == 1) {
dest = rank - 1;
source = dest;
tag = rank;
rc = MPI_Recv(&inmsg, 1, MPI_CHAR, source, tag, MPI_COMM_WORLD, &Stat);
printf("Received from task %d...n",source);
rc = MPI_Send(&outmsg, 1, MPI_CHAR, dest, tag, MPI_COMM_WORLD);
printf("Sent to task %d...n",dest);
}

if (rank < 2) {
rc = MPI_Get_count(&Stat, MPI_CHAR, &count);
printf("Task %d: Received %d char(s) from rank %d with tag %d n",rank, count, Stat.MPI_SOURCE, Stat.MPI_TAG);
}

MPI_Finalize();
}



Used 4 processes by calling


mpirun -n 8 ./a.out



Runtime error message


Task 0 starting...
Numranks=4. Only 2 needed. Ignoring extra...
Task 2 starting...
Task 3 starting...
Sent to task 1...
Task 1 starting...



After this it just hangs. This leads me to believe that there is an issue with MPI_Recv because it says sent to task 1... but does not receive it.









By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Popular posts from this blog

Visual Studio Code: How to configure includePath for better IntelliSense results

Spring cloud config client Could not locate PropertySource

Makefile test if variable is not empty