Python 如何将作业提交到具有不同节点的SLURM?

Python 如何将作业提交到具有不同节点的SLURM?,python,cluster-computing,slurm,sbatch,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

我必须使用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脚本,但对--node使用不同的值。我该怎么做?此外,我想为每次运行创建一个文件夹,在其中保存(输出)slurm文件,命名为“nodes_xy”。假设脚本名为
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

假设脚本名为
submit.sh
,则可以从脚本中删除
--节点
,然后运行:

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