Я пытаюсь создать программу 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);
}
}