2015-02-06 4 views
1

Я оцениваю различные библиотеки многопроцессорности для отказоустойчивого приложения. Мне в основном нужен любой процесс, который может быть разрешен, без остановки всего приложения.Что произойдет, если сбой MPI-процесса?

Я могу сделать это, используя системный вызов fork(). Предел здесь заключается в том, что процесс может быть создан только на одной машине.

Могу ли я сделать то же самое с MPI? Если процесс, созданный с ошибками MPI, может привести к продолжению работы родительского процесса и, в конечном итоге, создать новый процесс?

Есть ли альтернативная (возможно, многоплатформенная и открытая исходная) библиотека для получения того же результата?


Как сообщает here, MPI 4.0 будет иметь поддержку отказоустойчивости.

+1

Используйте свою любимую поисковую систему для отказоустойчивого MPI *, чтобы получить представление о текущем состоянии исследований в этой области. Сейчас, насколько мне известно, класс MPI, который может если происходит сбой процесса. –

+2

Большинство реализаций MPI заметят, что один процесс скончался и завершит работу всего MPI. Отказоустойчивость не попала в MPI-3, поэтому многие разработчики решили отложить построение FT в свои библиотеки (или наоборот). –

ответ

2

Если вы хотите коллективов, вы собираетесь придется ждать MPI-3.something (как High Performance Mark и Христо Illev предложить)

Если вы можете жить с точкой-точкой, и вы является больным человеком, желающим поднять кучу сообщений об ошибках от вашей реализации MPI, вы можете попробовать следующее:

  • отключить MPI обработчик ошибок по умолчанию
  • тщательно проверять каждый код возврата из ваших программ MPI
  • отслеживать в вашем приложении, которые ранжируются и которые не работают. О, и когда они спускаются, они никогда не смогут вернуться. но вы все равно не можете использовать коллективы (см. мое вступительное заявление), так что это не огромная сделка, не так ли?

Вот старый документ (назад, когда Билл все еще работал в Аргон я думаю, что с 2003 года.): http://www.mcs.anl.gov/~lusk/papers/fault-tolerance.pdf. В нем описаны виды отказоустойчивых вещей, которые можно делать в MPI. Возможно, такой «ограниченный MPI» может по-прежнему работать для ваших нужд.

2

Если вы хотите пойти на что-то качественное исследование, есть две реализации потенциальной главы о готовности к отказам для будущей версии MPI (MPI-4?). Это предложение называется «Снижение уровня пользователя». Существует экспериментальная версия в MPICH 3.2a2 и ветвь Open MPI, которая также предоставляет интерфейсы. Оба они далеки от качества продукции, но вы можете попробовать их. Просто знайте, что, поскольку это не соответствует стандарту MPI, префиксы функции не являются MPI_*. Для MPICH, они MPIX_*, для филиала Open MPI, они OMPI_* (хотя я считаю, что они будут меняться их быть MPIX_* скоро, как хорошо.

Как уже упоминалось Rob Латам, там будет много работы вам нужно будет сделать это в своем приложении для обработки сбоев, хотя вам необязательно проверять все ваши коды возврата. Вы можете/должны использовать обработчики ошибок MPI в качестве функции обратного вызова для упрощения. спецификации доступны вместе с Open MPI branch.

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