1
私はプログラム0を実行しようとしていますが、プロセス0はメッセージを自身以外のランダムプロセスに送信する初期化を開始する必要があります。別のランダムプロセスに送信します。これは、送信される要求された数のメッセージが完了するまで行われなければなりません。これは、ユーザーが入力として指定します。私ひどく終了したプロセスの一つ**私のプログラムは、最大2か、他にもなしでメッセージを送信し、私に次のエラーループ内のメッセージのMPI連続送信と受信
を与えているのいずれかのことを参照してください。終端(信号15:EXITのSTRINGで終了 アプリケーションをクリーンアップここでは)
**
は私のコードで、レムは、その中にいただきました!ループホールを知っています。ランダム生成部分は含まれておらず、正常に動作しています。
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;
}