У меня есть программа 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.
Есть ли способ сделать это?