2016-07-22 4 views
3

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

+0

Не избегайте этого! Это желаемое поведение в 99,9% случаев. Зачем вам иначе? – Gilles

+0

Мы хотим реализовать восстановление после сбоя: один сбой процесса, который мы просто перезапускаем. – dodolong

+5

Ну, вы не можете, так как MPI не поддерживает его. Отказоустойчивость была темой исследований в сообществе MPI на протяжении десятилетий и, как ожидается, приземлится в MPI 3.0, чего нет. Возможно, для MPI 4.0 ... – Gilles

ответ

4

В MPICH имеется флаг -disable-auto-cleanup, который предотвратит автоматическую очистку всех процессов при сбое одного процесса.

Однако MPI сам по себе не поддерживает поддержку отказоустойчивости, и это то, что Рабочая группа по отказоустойчивости работает над добавлением в будущую версию стандарта MPI.

В настоящем время, лучший, что вы можете сделать, это изменить по умолчанию MPI обработчика ошибки от MPI_ERRORS_ARE_FATAL, что вызывает все процессы, чтобы прервать, к чему-то другому, как MPI_ERRORS_RETURN который будет возвращать код ошибки приложения и дайте ему сделать что-то остальное. Тем не менее, вы вряд ли сможете общаться после сбоя, особенно если вы пытаетесь использовать коллективную связь.

Смежные вопросы