【发布时间】:2018-11-05 20:19:57
【问题描述】:
就以下问题寻求一些建议。
我在 SLURM 系统上使用 mpi4py 运行了许多作业。 我注意到,当给定的工作太大(即要处理的数据太多)时,我会收到以下错误:
mpirun noticed that process rank 0 with PID 62208 on node node1 exited on signal 9 (Killed).
我曾尝试在提交之前将一些作业分解为更小的块,但我想知道是否有办法预测 Killed 信号并添加一个 except 语句以在需要时将作业分解为块。
【问题讨论】:
-
这完全取决于您的工作和程序。只有您或程序的作者才能知道您的程序可以或不能计算什么。
-
我是代码的作者,我知道它在计算什么。我只是想知道处理器何时达到最大容量,这样我就可以在作业被终止之前分解数据。
-
但只有你能知道会发生什么,我们怎么知道?这取决于你的代码!
-
我看不出它如何依赖于我的代码。据我了解,Killed 信号是在处理器过载时发送的。因此,我正在寻找一种方法,以便在处理器的内存达到其极限时,在发送 Killed 信号之前从处理器获取读数。
-
不像其他 Linux 程序那样只监控可用内存量。保护 malloc 将无济于事,因为操作系统很可能会为进程提供比实际可用内存更多的内存。我相信您会在这里找到很多关于此的问答。