MPI застрял в исполнении - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь создать программу MPI, которая просто обменивается целочисленным сообщением между двумя процессами, и он зависает, а затем возвращает сообщение об ошибке:

mpirun вышел из-за ранга 1 процесса с PID0 на узле

что я здесь не так делаю

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

int main(int argc,char *argv[])
{
   int numtasks, rank, dest, tag, source, rc;
   int inmsg, outmsg = 100;
   MPI_Status stat;

   MPI_Init(&argc, &argv);
   MPI_Comm_size(MPI_COMM_WORLD, &numtasks);
   MPI_Comm_rank(MPI_COMM_WORLD, &rank);

   printf("Process %d starting...\n",rank);

   if (rank == 0) {
      dest = 1;
      source = dest;
      tag = 0;
      rc = MPI_Send(&outmsg, 1, MPI_INT, dest, tag, MPI_COMM_WORLD);
      printf("Message sento to process  %d...\n", dest);
      rc = MPI_Recv(&inmsg, 1, MPI_INT, source, tag, MPI_COMM_WORLD, 
&stat);
      printf("Received message from  %d...\n", source);
   }
   else if (rank == 1) {
      dest = 0;
      source = dest;
      tag = 0;
      rc = MPI_Recv(&inmsg, 1, MPI_INT, source, tag, MPI_COMM_WORLD, 
&stat);
      printf("Received from process %d...\n", source);
      rc = MPI_Send(&outmsg, 1, MPI_INT, dest, tag, MPI_COMM_WORLD);
      printf("Message sent to process  %d...\n", dest);
   }

}
...