MPICH2, сбой одного процесса приведет к сбою всех остальных процессов.

Я использую MPICH2. Когда я запускаю процессы с помощью mpiexec, сбой одного процесса приведет к сбою всех остальных процессов. Как этого избежать?


person dodolong    schedule 22.07.2016    source источник
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