【问题标题】:Invalid job array specification in slurmslurm 中的作业数组规范无效
【发布时间】:2015-02-26 03:55:34
【问题描述】:

我正在 slurm 中提交一个玩具阵列作业。我的命令行是

$ sbatch -p development -t 0:30:0 -n 1 -a 1-2 j1

其中 j1 是脚本:

#!/bin/bash
echo job id is $SLURM_JOB_ID
echo array job id is $SLURM_ARRAY_JOB_ID
echo task id id $SLURM_ARRAY_TASK_ID

当我提交这个时,我得到一个错误:

--> Verifying valid submit host (login1)...OK
--> Verifying valid jobname...OK
--> Enforcing max jobs per user...OK
--> Verifying availability of your home dir (/home1/03400/myname)...OK
--> Verifying availability of your work dir (/work/03400/myname)...OK
--> Verifying availability of your scratch dir (/scratch/03400/myname)...OK
--> Verifying valid ssh keys...OK
--> Verifying access to desired queue (development)...OK
--> Verifying job request is within current queue limits...OK
--> Checking available allocation (PRJ-1234)...OK
sbatch: error: Batch job submission failed: Invalid job array specification

没有数组规范,同样的工作也能正常工作:

$ sbatch -p development -t 0:30:0 -n 1 j1

【问题讨论】:

    标签: cluster-computing slurm


    【解决方案1】:

    这篇文章有点老了,但如果它发生在其他人身上,我也有同样的问题,但接受的答案并没有说明我的问题是什么。

    这个错误(sbatch: error: Batch job submit failed: Invalid job array specification)也可以在数组太大时引发。

    来自https://slurm.schedmd.com/slurm.conf.html

    MaxArraySize

    最大作业数组大小。最大作业数组任务索引值将比 MaxArraySize 小一以允许索引值为零。将 MaxArraySize 配置为 0 以禁用作业数组。该值不得超过 4000001。MaxJobCount 的值应远大于 MaxArraySize。默认值为 1001。

    要检查该值,所有 slurm 用户都应该可以访问 slurm.conf 文件(仍然根据 1),并且可以在 /etc/slurm.conf 附近的某个地方找到(参见 https://slurm.schedmd.com/slurm.conf.html#lbAM,在我的情况下,我在路径 /etc/slurm/slurm.conf 中找到它。

    【讨论】:

    • 如果这是您的问题,请注意更新您的 slurm.conf 文件后,更改不会通过“sudo scontrol reconfigure”生效。您必须重新启动控制守护程序:“sudo systemctl restart slurmctld”。
    • 如果您使用 GCP Slurm,则需要使用 sudo 编辑设置。文件是 /usr/local/etc/slurm/slurm.conf。运行“sudo scontrol reconfigure”就足够了。大数组大小的工作完成了。但是,在阅读了之前的评论后,我决定重新启动控制守护进程。
    【解决方案2】:

    您的数组规范的语法是正确的。但是您粘贴的打印输出不是标准的 Slurm,我猜您正在使用 Stampede ;他们有自己的 sbatch 包装器。

    你可以做的是使用-vvv 选项到sbatch 来查看 Slurm 看到的确切内容:

    $ sbatch -vvv -p development -t 0:30:0 -n 1 -a 1-2 j1 |& grep array
    

    这应该返回

    sbatch: array             : 1-2
    

    如果不是,则意味着信息以某种方式丢失了。

    您可以尝试从提交命令行中删除数组规范并将其插入到提交脚本中,如下所示:

    $ sbatch -p development -t 0:30:0 -n 1 j1
    

    j1 存在

    #!/bin/bash
    #SBATCH -a 1-2
    echo job id is $SLURM_JOB_ID
    echo array job id is $SLURM_ARRAY_JOB_ID
    echo task id id $SLURM_ARRAY_TASK_ID
    

    下一步是联系系统管理员,提供运行上述测试所获得的信息并寻求帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-09
      • 1970-01-01
      • 2022-12-01
      • 2020-01-22
      • 2018-12-24
      • 2022-01-14
      • 1970-01-01
      • 2021-09-04
      相关资源
      最近更新 更多