如何更新 Slurm 中的作业节点号?

How to update job node number in Slurm?

我有一个待处理的作业,我想调整它的大小。 我试过了:

scontrol update job <jobid> NumNodes=128

没用。

注意:我可以使用 scontrol 更改挂钟时间。但是当我尝试更改节点数时,它失败了。看来我可以根据这个页面更改节点http://www.nersc.gov/users/computational-systems/cori/running-jobs/monitoring-jobs/

您可以在 Slurm 中调整作业大小,前提是作业处于待处理状态或 运行。

根据 FAQ,您可以按照以下步骤调整大小(附示例):

展开

  1. 假设j1请求4个节点并提交:

    $ salloc -N4 bash
    
  2. 提交一个新作业 (j2),其中包含 j1 的额外节点数(在本例中为 10总共 14 个节点)并使其依赖于 j1 (SLURM_JOBID):

    $ salloc -N10 --dependency=expand:$SLURM_JOBID
    
  3. 取消分配j2的节点:

    $ scontrol update jobid=$SLURM_JOBID NumNodes=0
    
  4. 终止 j2:

    $ exit
    
  5. 分配给j1之前发布的节点:

    $ scontrol update jobid=$SLURM_JOBID NumNodes=ALL
    
  6. 并更新j1的环境变量:

    $ ./slurm_job_$SLURM_JOBID_resize.sh
    

现在,j1 有 14 个节点。

收缩

  1. 假设 j1 已提交:

    $ salloc -N4 bash
    
  2. j1更新为新尺寸:

    $ scontrol update jobid=$SLURM_JOBID NumNodes=2
    $ scontrol update jobid=$SLURM_JOBID NumNodes=ALL
    
  3. 并更新j1的环境变量(脚本由前面的命令创建):

    $ ./slurm_job_$SLURM_JOBID_resize.sh
    

现在,j1 有 2 个节点。

这是我从 NERSC 服务台获得的解决方案(致谢 LBNL 的 Woo-Sun Yang):

$ scontrol update jobid=jobid numnodes=new_numnodes-new_numnodes

例如$ scontrol update jobid=12345 numnodes=10-10

诀窍是使用上述格式的 numnodes。它适用于缩小和扩展您的节点。