slurm中的作业数组规格无效

问题描述 投票:3回答:2

我正在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
2个回答
3
投票

你的数组规范的语法是正确的。但是你粘贴的打印输出不是标准的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

下一步就是用运行以上测试得到的信息联系系统管理员,寻求帮助。


2
投票

这个帖子有点老了,但为了防止其他人发生这种情况,我也遇到过同样的问题,但接受的答案并没有提示我的情况是什么问题。

这个错误(sbatch: error: 批量作业提交失败。无效的作业数组规格)也可以在数组尺寸过大时被引发。

https:/slurm.schedmd.comslurm.conf.html。

MaxArraySize

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

要检查这个值,slurm.conf文件应该是所有slurm用户都可以访问的(仍然是根据 1),并可能在 etcslurm.conf 附近的某个地方找到(见 https:/slurm.schedmd.comslurm.conf.html#lbAM。在我的例子中,我在路径etcslurmslurm.conf中找到它)。)

© www.soinside.com 2019 - 2024. All rights reserved.