当shell关闭时,mpi主进程不会被杀死

时间:2018-05-04 12:22:41

标签: parallel-processing mpi openmpi

我使用mpi在并行模式下运行LAMMPS,我发现了一些奇怪的事情。

如果我关闭启动进程的shell,则会终止从属进程,但主服务器不会被执行:

(使用开放式shell)

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 +变为R1。 R应该代表"运行/运行" S应该代表"可中断睡眠(等待事件完成)&#34 ;; l表示该进程是多线程的+并且它位于前台进程组中(例如参见this network post)。

如果我在串行模式下启动相同的脚本,那么当shell关闭时,该过程将被正常终止。

这是一个已知的mpi错误吗?如果没有,可能是什么原因?

(我使用的是Open MPI版本1.10.2)

更新

我实际上意识到结果在某种程度上是不可重复的。到目前为止,我有三种不同的结果:

  1. 关闭外壳时,主人和奴隶将被杀死。
  2. 关闭外壳时只会杀死奴隶。
  3. 关闭shell时没有进程被杀死。

0 个答案:

没有答案