先看程序(5个进程):
这是程序中进程0中结束各线程的程序段:
for(int i=0;i<16;i++)
{
int endsign = -2;
MPI_Status status;
MPI_Recv(&recvtaskindex,1,MPI_INT,MPI_ANY_SOURCE,MPI_ANY_TAG,MPI_COMM_WORLD,&status);
MPI_Send(&endsign,1,MPI_INT,status.MPI_SOURCE,status.MPI_TAG,MPI_COMM_WORLD);
taskpool[recvtaskindex].success=1;
taskpool[recvtaskindex].nodeid=status.MPI_SOURCE;
}
请问上述程序有5个进程执行,请问为何结束各线程while循环的消息(-2)发送16次,而接收到的总是不到16次呢,所以程序就MPI_Recv停在那里了
是不是mpi有什么缓冲区限制什么的,还是程序有啥问题?