我想问您是否可以将全局系统变量传递给#SBATCH标记。
我想做点这样的事
SBATCH文件
#!/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这不是工作所以我才问你。
发布于 2018-06-07 08:56:49
请记住,SBATCH参数行被Bash视为注释,因此它根本不会试图解释它们。
此外,对于Slurm来说,#SBATCH指令必须在任何其他Bash命令之前为。
其他方法包括在命令行中设置参数:
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。还请注意,Bash中的字符串连接不是用+符号实现的。
https://stackoverflow.com/questions/50735580
复制相似问题