|
@@ -68,19 +68,16 @@ int main(int argc, char* argv[]) {
|
|
|
|
|
|
}
|
|
|
|
|
|
-void mpiSync(GSATThreadMPI* gsat, bool solve) {
|
|
|
- bool stop = false;
|
|
|
- for(int i = 0; i < world_size; i++){
|
|
|
- int buff;
|
|
|
- if(i == world_rank) {
|
|
|
- buff = solve ? 1 : 0;
|
|
|
- }
|
|
|
- MPI_Bcast(&buff, 1, MPI_INT, i, MPI_COMM_WORLD);
|
|
|
- if(i != world_rank && buff && !stop) {
|
|
|
- stop = true;
|
|
|
- }
|
|
|
- }
|
|
|
- if(stop) {
|
|
|
+void mpiWait(GSATThreadMPI* gsat) {
|
|
|
+ int buff;
|
|
|
+ MPI_Recv(&buff, 1, MPI_INT, MPI_ANY_SOURCE, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
|
|
|
+ if(buff != world_rank) {
|
|
|
gsat->isEnd();
|
|
|
}
|
|
|
+}
|
|
|
+
|
|
|
+void mpiNotify(int rank) {
|
|
|
+ for(int i = 0; i < world_size; i++) {
|
|
|
+ MPI_Send(&rank, 1, MPI_INT, i, 0, MPI_COMM_WORLD);
|
|
|
+ }
|
|
|
}
|