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

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

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

Ответы на вопрос(1)

Решение Вопроса

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

command line arguments: the MPI launcher can pass arguments to the spawned processes indicating how and where to connect in order to establish the universe. That's why MPI has to be initialised by calling MPI_Init() with argc and argv in C - thus the library can get access to the command line and extract all arguments that are meant for it; environment variables: the MPI launcher can set specific environment variables whose content can indicate where and how to connect.

Например, 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 запускает и считывает эти переменные окружения. Затем он подключается обратно к указанному сетевому адресу с помощью «home»mpirun/mpiexec процесс, который затем координирует все порожденные процессы в создании вселенной MPI.

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

 Bojan B06 июн. 2012 г., 17:19
Отличный ответ, спасибо! Я думал о переменных среды как о возможности, но не смог найти подтверждения.

Ваш ответ на вопрос