SLURM:在工作程序完成后重新启动工作程序

问题描述

我想创建一个SLURM工作程序数组,每当其中一个工作程序完成工作时,我都想重新启动工作程序。

如果可以在队列中运行无限长的作业,那么我当然会这样做,但是因为这不可能,所以我认为我只会创建无限数量的工人。

在SLURM中可能吗?我以为可以从工作程序数组中的最后一个工作程序内部提交sbatch命令来重新启动整个序列,但是工作程序在集群中运行的计算节点无法访问{{1} }可调用。

任何有关此问题的指针都将非常有帮助!

解决方法

没有内置的方法可以做到这一点。根据您的集群,仍然可能有一些技巧可以解决此问题。在尝试此操作之前,请先与您的群集管理员联系,因为这些管理员很容易受到攻击,并且可能是您的管理员决定不在计算节点上使用sbatch的原因。

  1. ssh进入可使用sbatch的节点,然后从那里重新提交作业。这取决于您的群集ssh设置。
  2. 将sbatch二进制文件复制到您的主目录(或您可以在节点上访问的任何目录)中,并在那里使用它。这取决于Slurm,防火墙等的设置。
  3. 在前端运行一个程序,该程序会定期检查您的作业是否仍在运行,如果没有,请重新提交。一旦最后一个登录外壳关闭,某些群集会自动杀死前端上的所有用户进程,因此在这种情况下将无法使用。

但是要重申:请先询问您的系统管理员!我们通常不会咬你的头。

,

补充@Marcus Boden的答案:许多人在登录节点上设置CRON作业以定期测试队列状态,并在必要时重新提交作业。将来的Slurm版本中可能会提供scrontab命令,以帮助解决此用例。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...