Вызов сценария, который вызывает процесс MPI из процесса MPI

У меня есть программа MPI (Fortran, MPICH), которую мне нужно преобразовать в сценарий, который, в свою очередь, , запускает собственную программу MPI (используя mpirun). До сих пор я обернул команду shell out (system) в if(system_num .eq. root_system_num), так что только один процесс MPI запускает сценарий. Однако это вызывает ряд ошибок HYDU_create_process.

Я рассматривал возможность использования MPI_Comm_spawn, но есть предупреждения типа "MPI не говорит, что произойдет, если программа, которую вы запускаете, является сценарием оболочки, а этот сценарий оболочки запускает программу, которая вызывает MPI_INIT", так что это тоже кажется далеко не идеальным.

Некоторые моменты:

  • Программа, вызываемая в сценарии оболочки, вообще не должна взаимодействовать с вызывающей программой. Вызывающей программе просто нужно дождаться завершения этого процесса.
  • Нет простого способа превратить сценарий оболочки в отдельный исполняемый файл (множество настроек переменных среды и т. д.).
  • В идеале это должно работать как для MPICH, так и для Open MPI.

Есть ли способ сделать это?


person Eli Lansey    schedule 10.04.2013    source источник


Ответы (1)


К сожалению, для MPICH лучше всего использовать MPI_Comm_spawn. Ваш единственный другой вариант - выяснить все зависящие от реализации и версии переменные среды, которые должны быть unset в вашем сценарии оболочки, прежде чем вызывать вложенную программу MPI. Некоторые примеры переменных (для MPICH) могут включать PMI_RANK и PMI_PORT:

% mpiexec -n 1 env | egrep '^PMI|^HYD'
HYDI_CONTROL_FD=8
PMI_RANK=0
PMI_FD=7
PMI_SIZE=1

Очевидно, что для Open MPI или разных версий MPICH2/MPICH потребуется подкрутить разные переменные.

person Dave Goodell    schedule 11.04.2013
comment
Да, я склоняюсь к MPI_Comm_spawn. Но теперь мне нужно проанализировать все виды файлов, чтобы извлечь, какие переменные среды должны быть, прежде чем код сам проанализирует файлы. Файлы предназначены для чтения Фортраном, теперь мне нужно настроить шелл-скрипт, чтобы сделать это. - person Eli Lansey; 11.04.2013