Я бегу LAMMPS в параллельном режиме с использованием mpi, и я заметил нечто странное.
Если я закрою оболочку, из которой был запущен процесс, подчиненные процессы будут уничтожены, но мастер не будет:
(с открытой оболочкой)
valesori@eris:~$ ps aux | grep lammps
valesori 3985 0.2 0.0 208124 7508 pts/26 Sl+ 13:59 0:00 mpirun -np 4 lammps -in in.create_bonds
valesori 3987 96.9 0.2 406148 21956 pts/26 Rl 13:59 0:09 lammps -in in.create_bonds
valesori 3988 94.2 0.2 406060 22192 pts/26 Rl 13:59 0:09 lammps -in in.create_bonds
valesori 3989 98.5 0.2 406040 21888 pts/26 Rl 13:59 0:09 lammps -in in.create_bonds
valesori 3991 94.2 0.2 406044 21944 pts/26 Rl 13:59 0:09 lammps -in in.create_bonds
valesori 4102 0.0 0.0 14228 936 pts/27 S+ 13:59 0:00 grep lammps
(с закрытой оболочкой)
valesori@eris:~$ ps aux | grep lammps
valesori 3985 15.1 0.1 208124 8244 ? Rl 13:59 0:04 mpirun -np 4 lammps -in in.create_bonds
valesori 4285 0.0 0.0 14228 924 pts/27 S+ 13:59 0:00 grep lammps
Единственное, что я заметил, это то, что состояние главного процесса меняется с Sl + на Rl. R должен означать «работает / работать», в то время как S должен означать «прерывистый сон (ожидание завершения события)»; l означает, что процесс является многопоточным и + находится в группе процессов переднего плана (см., например, этот сетевой пост ).
Если я запускаю тот же сценарий в последовательном режиме, процесс обычно завершается при закрытии оболочки.
Это известная ошибка в mpi? Если нет, то в чем может быть причина?
(я использую Open MPI версии 1.10.2)
UPDATE
Я действительно понял, что результат в некотором роде не воспроизводим. До сих пор у меня было 3 разных результата:
- Мастер и рабы убиты, когда оболочка закрыта.
- Только рабы убиты при закрытой оболочке.
- При закрытии оболочки процесс не прерывается.