Горячее подключение дополнительного узла в кластере OpenMPI

#mpi #cluster-computing #distributed-computing #openmpi

#mpi #кластерные вычисления #распределенные вычисления #openmpi

Вопрос:

Возможно ли горячее подключение дополнительного узла (хоста) к рабочему приложению OpenMPI? Мы говорим о производственной среде, где мы не можем позволить себе даже 5-секундного простоя. Меня интересуют два сценария:

  1. Мы просто хотели бы увеличить вычислительную мощность, добавив еще одного слушателя широковещательной передачи.
  2. Узел умер, главный узел хорошо с этим справляется и перепоручает задачу кому-то другому. Входит системный администратор, перезапускает нерабочий узел и подключает его обратно к кластеру.

Какая независимая от платформы реализация MPI была бы лучшей для описанного выше сценария? OpenMPI здесь не является обязательным.

Ответ №1:

MPI-2 — любая реализация — допускает динамические процессы, и фактически, добавление процессов в настоящее время гораздо более осуществимо, чем удаление процессов. Вы можете использовать MPI_COMM_SPAWN для запуска нового процесса с заданным исполняемым файлом, и это возвращает внутрикоммуникатор, который можно использовать для обмена данными между старыми (исходными) процессами.

Хитрости здесь в том, что ничто не обнаружит новый узел автоматически. Вам нужно будет, чтобы какой-то процесс следил за ними, SPAWN что-то с ними. Если новые узлы будут просто прослушивателями главного узла, это, вероятно, лучший вариант, поскольку только главный узел действительно должен знать об этом. Вызов для обеспечения того, чтобы порождение происходило на новом узле, а не где-либо еще, будет выполняться через info аргумент для порождения и может зависеть от реализации.

Комментарии:

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

2. Простой просмотр спецификации MPI_Info ответил на мой вопрос из предыдущего комментария.