将系统变量插入SBATCH

时间:2018-06-07 07:43:51

标签: slurm sbatch

我想问你是否可以将全局系统变量传递给#SBATCH标签。

我想做那样的想法

SBATCH FILE

#!/bin/bash -l
ARG=64.dat
NODES=4
TASK_PER_NODE=8
NP=$((NODES*TASK_PER_NODE))

#SBATCH -J 'MPI'+'_'+$NODES+'_'+$TASK_PER_NODE
#SBATCH -N $NODES
#SBATCH --ntasks-per-node=$TASK_PER_NODE

这不是我的工作原因所以我问你。

1 个答案:

答案 0 :(得分:1)

请记住,SBATCH参数行被Bash视为评论,因此根本不会尝试解释它们。

此外,#SBATCH指令在任何其他Bash命令之前必须才能让Slurm处理它们。

替代方案包括在命令行中设置参数:

NODES=4 sbatch --nodes=$NODES ... submitscript.sh

或通过stdin传递提交脚本:

#!/bin/bash -l
ARG=64.dat
NODES=4
TASK_PER_NODE=8
NP=$((NODES*TASK_PER_NODE))

sbatch <<EOT
#SBATCH -J 'MPI'+'_'+$NODES+'_'+$TASK_PER_NODE
#SBATCH -N $NODES
#SBATCH --ntasks-per-node=$TASK_PER_NODE

srun ...

EOT

在后一种情况下,您需要运行提交脚本,而不是将其交给sbatch,因为它本身会运行sbatch