如何使用不同的节点向SLURM提交作业?

时间:2017-05-13 14:48:31

标签: python cluster-computing slurm sbatch

我必须使用sbatch在集群上运行多个模拟。在一个文件夹中,我有要运行的Python脚本和一个与sbatch一起使用的文件:

#!/bin/bash -l
#SBATCH --time=04:00:00
#SBATCH --nodes=32
#SBATCH --ntasks-per-core=1
#SBATCH --ntasks-per-node=36
#SBATCH --cpus-per-task=1
#SBATCH --partition=normal
#SBATCH --constraint=mc

module load Python

source /scratch/.../env/bin/activate

srun python3 script.py

deactivate

我要做的是运行相同的Python脚本,但为--nodes使用不同的值。我怎样才能做到这一点?此外,我想为每个运行创建一个文件夹,其中将保存slurm文件(输出),名称类似于" nodes_xy"。

1 个答案:

答案 0 :(得分:3)

假设您的脚本名为submit.sh,您可以从脚本中删除--nodes并运行:

for i in 2 4 8 16 32 64; do sbatch --nodes $i --output nodes_$i.txt, submit.sh; done

这将提交submit.sh脚本,其中包含两个附加参数--nodes--output,第一个用于控制使用的节点数,第二个用于指定名称输出文件,对于每个值2,4,8等。请注意,所有输出文件都将在当前目录中,如果您确实需要在单独的目录中,则需要开发一行内容。

如果允许的最大允许运行时间允许,您可以在单个作业中执行所有运行,如下所示:

#!/bin/bash -l
#SBATCH --time=04:00:00
#SBATCH --nodes=32
#SBATCH --ntasks-per-core=1
#SBATCH --ntasks-per-node=36
#SBATCH --cpus-per-task=1
#SBATCH --partition=normal
#SBATCH --constraint=mc

module load Python

source /scratch/.../env/bin/activate

for i in  2 4 8 16 32 64;
do
srun --nodes $i python3 script.py > nodes_$i
done

deactivate