Какую функцию MPI лучше всего использовать, когда процессу необходимо сообщить всем остальным процессам об остановке (в C)? - PullRequest
0 голосов
/ 07 апреля 2020

Допустим, у меня есть 5 подчиненных процессов и 1 главный процесс.

5 подчиненных процессов работают параллельно.

Каждый из 5 подчиненных процессов имеет одинаковую вероятность возникновения ошибки.

Когда один из подчиненных процессов сталкивается с ошибкой, им необходимо сообщить все другие подчиненные процессы и главный процесс. тоже.

Какую функцию MPI лучше всего здесь использовать? Я думал о том, чтобы получить целую кучу MPI_RECEIVE звонков, но это кажется немного нелепым.

См. Пример ниже:

int main(int argc, char **argv) {
  // setup 
  MPI_Init (&argc, &argv);
  MPI_Comm_size (MPI_COMM_WORLD, &numprocs);
  MPI_Comm_rank (MPI_COMM_WORLD, &myid);

    if (myid == 0) {
        // send some data to each slave process to get them started
        MPI_SEND(...)
    } else {
        // receive some data from the master 
        MPI_RECEIVE(...)

        // work on the data  

        // inform all other processes if there is an error

        // do more work on the data   

        // inform all other processes if there is an error

        // etc
    }
}
...