Я использую MPICH2. Когда я запускаю процессы с помощью mpiexec, сбой одного процесса приведет к сбою всех остальных процессов. Как этого избежать?
MPICH2, сбой одного процесса приведет к сбою всех остальных процессов.
comment
Не избегайте этого! Это желаемое поведение в 99,9% случаев. Почему вы хотите иначе?
- person Gilles   schedule 22.07.2016
comment
Мы хотим реализовать восстановление после сбоя: один процесс рухнет, а другой просто перезапустим.
- person dodolong   schedule 22.07.2016
comment
Ну, вы не можете, так как MPI его не поддерживает. Отказоустойчивость была предметом исследований в сообществе MPI на протяжении десятилетий, и ожидалось, что она появится в MPI 3.0, но этого не произошло. Возможно для MPI 4.0...
- person Gilles   schedule 22.07.2016
comment
Ваш вопрос немного общий, здесь есть обзор последних усилий: stackoverflow.com/a/23919726/491687
- person Wesley Bland   schedule 22.07.2016
Ответы (1)
В MPICH есть флаг -disable-auto-cleanup
, который не позволяет менеджеру процессов автоматически очищать все процессы в случае сбоя одного процесса.
Однако сам MPI не имеет значительной поддержки отказоустойчивости, и это то, над чем работает рабочая группа по отказоустойчивости в будущей версии стандарта MPI.
На данный момент лучшее, что вы можете сделать, это изменить обработчик ошибок MPI по умолчанию с MPI_ERRORS_ARE_FATAL
, который вызывает прерывание всех процессов, на что-то другое, например MPI_ERRORS_RETURN
, которое вернет код ошибки приложению и позволит ему делать что-то еще. Однако вы вряд ли сможете больше общаться после того, как произошел сбой, особенно если вы пытаетесь использовать коллективное общение.
person
Wesley Bland
schedule
22.07.2016