我们使用带有Perceus (warewulf) 软件的集群来进行一些计算。该软件包具有wwmpirun
准备主机文件并执行的程序(Perl 脚本)mpirun
:
# ...
system("$mpirun -hostfile $tmp_hostfile -np $mpirun_np @ARGV");
# ...
我们使用此脚本在多个节点上运行数学程序 (CODE),通常应该通过 Ctrl+C 停止 CODE,并提供一个带有选项的简短菜单:状态、停止和暂停。但是,使用 MPI 运行时,按 Ctrl+C 会严重杀死 CODE 并丢失数据。
CODE 的开发人员提出了一种解决方法 - 可以通过创建一个名为 的文件来停止程序stop%s
,其中%s
是 CODE 正在执行的任务文件的名称。这允许停止,但我们无法获得计算状态。有时需要很长时间才能恢复此功能,我们将不胜感激。
您怎么看 - 问题出在 CODE 还是mpirun
?
有人能找到一种与 CODE 执行的通信的方法mpirun
吗?
更新1
在单次运行中,通过按 Ctrl+C 并status
通过输入在提供的菜单中选择选项来获取计算状态s
。CODE 在 STDOUT 中打印状态信息并继续进行计算。