Как запускаются процессы MPI?

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

Меня интересуют подробности или указатель на то, где искать.

1 ответ

Решение

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

  • Аргументы командной строки: средство запуска MPI может передавать аргументы порожденным процессам, указывающие, как и где подключиться, чтобы установить юниверс. Вот почему MPI должен быть инициализирован путем вызова MPI_Init() с argc а также argv в C - таким образом библиотека может получить доступ к командной строке и извлечь все аргументы, которые для нее предназначены;
  • Переменные среды: средство запуска MPI может устанавливать конкретные переменные среды, содержимое которых может указывать, где и как подключаться.

Например, Open MPI устанавливает переменные среды, а также записывает некоторые состояния юниверса в расположение диска, известное всем процессам, работающим на одном узле. Вы можете легко увидеть специальные переменные, которые использует его компонент времени выполнения ORTE (среда выполнения OpenMPI), выполнив такую ​​команду, как mpirun -np 1 printenv:

$ mpiexec -np 1 printenv | grep OMPI
... <many more> ...
OMPI_MCA_orte_hnp_uri=1660944384.0;tcp://x.y.z.t:43276;tcp://p.q.r.f:43276
OMPI_MCA_orte_local_daemon_uri=1660944384.1;tcp://x.y.z.t:36541
... <many more> ...

(IP-адреса изменены по соображениям безопасности)

Когда дочерний процесс запускается удаленно и MPI_Init() или же MPI_Init_thread() вызывается, ORTE запускает и читает эти переменные окружения. Затем он подключается обратно по указанному сетевому адресу с "домом" mpirun/mpiexec процесс, который затем координирует все порожденные процессы в создании вселенной MPI.

Другие реализации MPI работают аналогичным образом.

Другие вопросы по тегам