使用SBATCH作业名称作为文件输出中的变量

时间:2018-05-08 21:08:34

标签: slurm sbatch

使用SBATCH,您可以使用%j的以下语法在自动生成的输出文件中使用job-id:

#!/bin/bash
# omitting some other sbatch commands here ... 
#SBATCH -o slurm-%j.out-%N # name of the stdout, using the job number (%j) and the first node (%N)
#SBATCH -e slurm-%j.err-%N # name of the stderr, using job and first node values

我一直在寻找使用job-name而不是job-id的类似语法。有没有人可以参考%j样式语法中可以引用的其他slurm / sbatch值?

1 个答案:

答案 0 :(得分:1)

在最新版本的SLURM中,有一个代表作业名称的选项%x。 请参阅github上的“Slurm 17.02.1中的更改​​”部分: enter image description here

然而,在许多当前群集中,slurm版本比这更旧,并且未实现此选项。您可以在系统上查看slurm调度程序的版本:

{
  "userName" : "xxx",
  "id" : "1234",
  "good" : true
}

然而,有一种解决方法。 您可以创建自己的bash脚本,可以将名称作为参数,创建一个提交脚本,使用该名称作为作业名称和输出文件,然后提交它。例如, 您可以创建脚本submit.sh:

sbatch --version

然后使用与您要为您的工作提供的工作名称相对应的参数执行它:

#!/bin/bash

echo "#!/bin/bash" > jobscript.sh
echo "#SBATCH -o $1-%j.out-%N" >> jobscript.sh
echo "#SBATCH -e $1-%j.err-%N" >> jobscript.sh
echo "#SBATCH -J $1" >> jobscript.sh   
#other echo commands with SBATCH options

echo "srun mycommand" >> jobscript.sh


#submit the job
sbatch jobscript.sh