1
以及我正在尝试执行一个程序,其中进程0应该开始将消息发送到除本身之外的随机进程的初始化,那么选择的随机进程应该接收消息并发送到另一个随机过程。这应该发生,直到请求发送的消息数量完成,这是用户输入的。我看到我的程序要么发送消息在最大2或甚至没有,并给我以下错误MPI连续发送和接收循环中的消息
**其中一个过程停止:清理 终止的应用程序退出字符串:终止(信号15 )
**
这里是我的代码,还是让我知道什么是其中的漏洞。不包括随机生成部分,这是工作正常
if(rank==0)
{
rnum=rgenerator(rank,size);
string++;
MPI_Send(&string, 50, MPI_INT, rnum, rnum, MPI_COMM_WORLD);
printf("\n process %d sends message to process %d",rank, rnum);
//MPI_Recv(&flag, 100, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
}
while(flag!=1)
{
if(MPI_Recv(&string, 50, MPI_INT, MPI_ANY_SOURCE, rank, MPI_COMM_WORLD, &status)==MPI_SUCCESS)
{
printf("\n process %d receives message from process %d count : %d",rank, status.MPI_SOURCE, string);
rnum=rgenerator(rank,size);
printf("\n Random num generated is %d",rnum);
string=string+1;
MPI_Send(&string, 50, MPI_INT, rnum, rnum, MPI_COMM_WORLD);
count++;
printf("\n process %d sends message to process %d", rank, rnum);
//MPI_Bcast(&count, 40, MPI_INT, rank, MPI_COMM_WORLD);
if(string==n)
{
printf("\n\n Messages reached");
flag=1;
}
}
else
flag=0;
}