Помните, что строки параметров 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
сам.