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

8

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

#!/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

我一直在寻找一种类似的语法,可以使用作业名称而不是作业ID。有没有人知道其他 slurm/sbatch 值可以在 %j 样式语法中引用的参考资料?

1个回答

9
在最新的SLURM版本中,有一个%x选项代表作业名称。 请参阅Github上的“Slurm 17.02.1变更”部分: https://github.com/SchedMD/slurm/blob/master/NEWS 然而,在许多当前的集群中,slurm版本比较老,这个选项未被实现。您可以查看您系统上slurm调度器的版本:
sbatch --version

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

#!/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

然后使用与您要为作业分配的作业名称相对应的参数执行它:

bash ./submit.sh myJobName

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接