如何在slurm id的同一个节点上运行一个多输入的python代码?

问题描述 投票:0回答:1

我想运行一个python程序10次,并将不同的输出文件保存为output_1、output_2、output_3......等。它可以使用1个处理器和10个线程来运行。我在一个节点上可以使用96个CPU,所以,我想在同一个节点上执行这10个工作。

我的python代码如下

python mycode.py $file_number #file_number =1,2,3,4...

我提交的作业是这样的......但它使用了7个节点。

#!/bin/bash
#SBATCH -J v2-array              
#SBATCH -o x.out  
#SBATCH --nodes=1 
#SBATCH --ntasks-per-node=7 
#SBATCH --cpus-per-task=10

#SBATCH -t 72:00:00         
#SBATCH --mail-type=FAIL
#SBATCH --array=0-6

python mycode.py $SLURM_ARRAY_TASK_ID

但我想在同一个节点上执行整个作业,而不是7个节点,我该怎么做?

python parallel-processing cluster-computing hpc slurm
1个回答
0
投票

移除 #SBATCH --ntasks-per-node=7 行。你要求的是总共7个job×7个tasksjob×10cpustask=490CPU,而你似乎只需要job×1个tasksjob×10cpustask=70CPU。

此外,在上面的例子中,除非 mycode.py 被明确写成与Slurm交互,它将只能使用每个作业的10个CPU(相比之下,70个被分配)。

请注意,一个数组中的所有作业都是独立的,没有办法让它们肯定在同一个节点上启动。它们可能会在不同的时间、不同的节点上启动,这取决于队列的状态。而如果队列是空的,则取决于Slurm的配置,它可能会偏向于将作业分散到可用的节点上(这是一个较少使用的功能,但它存在)。

© www.soinside.com 2019 - 2024. All rights reserved.