我很难弄清楚如何在 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 变量没有被广播到所有处理器。我错过了什么吗?