如何预测MPI进程被杀死

时间:2018-05-26 18:49:15

标签: python mpi slurm mpi4py

寻找有关以下问题的一些建议。

我在SLURM系统上使用mpi4py运行了许多作业。 我注意到当给定的作业太大(即处理的数据太多)时,我收到以下错误:

mpirun noticed that process rank 0 with PID 62208 on node node1 exited on signal 9 (Killed).

我曾尝试在提交之前将一些作业分解成更小的块,但我想知道是否有办法预测一个被杀信号并添加一个except语句,以便在需要时将作业分成块。

2 个答案:

答案 0 :(得分:0)

无法捕获,阻止或阻止KILL信号        被忽略了,但它通常先于INT或TERM信号,你可以抓住它并抓住机会采取行动。请参阅Python中的示例,了解INT信号here

答案 1 :(得分:0)

您的应用程序分配了太多内存。遗憾的是,SIGKILL无法在您的应用中处理;所以你需要积极主动(确保你永远不会有更多的记忆)而不是被动(抓住信号并采取行动)。目前还不清楚你究竟是什么意思和太多的数据来处理"或者你如何将问题分解成更小的块,所以我只能给出一些一般的建议。

如果您可以合理地估计您尝试解决的问题的内存要求,则可以警告用户并在问题大小大于节点可以处理的情况下提前中止作业。然后,脚本可以减少问题大小或增加节点数量,直到它适合内存。如果节点是共享的,或者您事先不知道可用内存量,则可以使用get_phys_pages()get_avphys_pages等函数来确定。