我想问你是否可以将全局系统变量传递给#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
这不是我的工作原因所以我问你。
答案 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
。