C で OpenMPI を使用してループから抜け出す方法を理解するのに苦労しています。
これが私のループです
for( i=1; i<=steps;i++) {
do_calculation(psi,new_psi,&mydiff,i1,i2,j1,j2);
if (breakNow == 1) {
break;
}
diff = find_difference();
if(myid == mpi_master && i % iout == 0){
printf("%8d %15.5f\n",i,diff);
if (diff == 0.00) {
printf("DONE!");
breakNow = 1;
MPI_Bcast(&breakNow, 1, MPI_INT, mpi_master, MPI_COMM_WORLD);
}
}
}
差が 0.00 の場合、すべてのプロセッサをループから外す必要がありますが、breakNow 変数がすべてのプロセッサにブロードキャストされていないようです。何か不足していますか?