【发布时间】:2018-11-18 21:35:05
【问题描述】:
我试图让每个进程都以这种方式广播到所有其他进程
#include "mpi.h"
#include <stdio.h>
int main(argc,argv)
int argc;
char **argv;
{
int MyProc, size,tag=1;
int msg_recpt;
MPI_Status status;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &MyProc);
MPI_Comm_size(MPI_COMM_WORLD, &size);
printf("Process # %d started \n", MyProc);
MPI_Barrier(MPI_COMM_WORLD);
MPI_Bcast( &MyProc, 1, MPI_INT, MyProc, MPI_COMM_WORLD);
MPI_Recv(&msg_recpt, 1, MPI_CHAR, MyProc, tag, MPI_COMM_WORLD, &status);
printf("Proc #%d recv'd message from Proc #%d \n", MyProc, msg_recpt) ;
printf("Finishing proc %d\n", MyProc);
MPI_Barrier(MPI_COMM_WORLD);
MPI_Finalize();
}
我需要在MPI_Recv 之后的消息上显示发件人进程,但我认为它被阻止执行未到达printf("Finishing proc %d\n", MyProc);
【问题讨论】: