slurm 中的作业数组规范无效
Invalid job array specification in 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
您的数组规范的语法是正确的。但是您粘贴的打印输出不是标准的 Slurm,我猜您正在处理 Stampede;他们有自己的 sbatch 包装器。
您可以使用 sbatch
的 -vvv
选项来准确查看 Slurm 看到的内容:
$ sbatch -vvv -p development -t 0:30:0 -n 1 -a 1-2 j1 |& grep array
这应该return
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
下一步是联系系统管理员,并提供您将从 运行 上述测试中获得的信息并寻求帮助。
这个post有点老了,但如果其他人也遇到过,我也遇到过同样的问题,但接受的答案并没有说明我的问题是什么。
这个错误(sbatch:错误:批量作业提交失败:无效的作业数组规范)当数组大小太大时也会引发此错误。
来自https://slurm.schedmd.com/slurm.conf.html
MaxArraySize
The maximum job array size. The maximum job array task index value will be one less than MaxArraySize to allow for an index value of zero. Configure MaxArraySize to 0 in order to disable job array use. The value may not exceed 4000001. The value of MaxJobCount should be much larger than MaxArraySize. The default value is 1001.
要检查该值,所有 slurm 用户都应该可以访问 slurm.conf 文件(仍然根据 1) and may be found somewhere near /etc/slurm.conf (see https://slurm.schedmd.com/slurm.conf.html#lbAM,在我的例子中,我在路径 /etc/slurm/slurm.conf 中找到了它) .
我正在 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
您的数组规范的语法是正确的。但是您粘贴的打印输出不是标准的 Slurm,我猜您正在处理 Stampede;他们有自己的 sbatch 包装器。
您可以使用 sbatch
的 -vvv
选项来准确查看 Slurm 看到的内容:
$ sbatch -vvv -p development -t 0:30:0 -n 1 -a 1-2 j1 |& grep array
这应该return
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
下一步是联系系统管理员,并提供您将从 运行 上述测试中获得的信息并寻求帮助。
这个post有点老了,但如果其他人也遇到过,我也遇到过同样的问题,但接受的答案并没有说明我的问题是什么。
这个错误(sbatch:错误:批量作业提交失败:无效的作业数组规范)当数组大小太大时也会引发此错误。
来自https://slurm.schedmd.com/slurm.conf.html
MaxArraySize
The maximum job array size. The maximum job array task index value will be one less than MaxArraySize to allow for an index value of zero. Configure MaxArraySize to 0 in order to disable job array use. The value may not exceed 4000001. The value of MaxJobCount should be much larger than MaxArraySize. The default value is 1001.
要检查该值,所有 slurm 用户都应该可以访问 slurm.conf 文件(仍然根据 1) and may be found somewhere near /etc/slurm.conf (see https://slurm.schedmd.com/slurm.conf.html#lbAM,在我的例子中,我在路径 /etc/slurm/slurm.conf 中找到了它) .