mpi program hangs at MPI_SEND

Multi tool use
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.