0

我必须使用 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”。

4

1 回答 1

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
于 2017-05-15T13:06:05.993 回答