hig*_*dth 4 cluster-computing slurm
我正在提交一份 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
小智 8
这篇文章有点旧,但万一发生在其他人身上,我遇到了同样的问题,但接受的答案并没有暗示我的问题是什么。
当数组大小太大时,也会引发此错误(sbatch: error: Batch job submit failed: Invalid job array specification)。
来自https://slurm.schedmd.com/slurm.conf.html
最大阵列尺寸
最大作业数组大小。最大作业数组任务索引值将比 MaxArraySize 小 1,以允许索引值为零。将 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,我猜你正在制作 Stampede ;他们有自己的批次包装纸。
您可以做的是使用该-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
下一步是联系系统管理员,提供通过运行上述测试获得的信息并寻求帮助。