使用 slurm 阵列作业

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

我有一个作业脚本,它运行某个 python 脚本,并使用 argparsing 提供的参数。我知道,当我想要运行这项作业时,我几乎总是希望不仅提交一项作业,而且还希望同时提交多项作业,并使用一个特定参数的不同值。我已经阅读了几篇关于为此使用 slurm 数组的文章,例如通过设置: 作业脚本顶部的

#SBATCH --array=1-10
,然后在调用 python 脚本中使用
$SLURM_ARRAY_TASK_ID
访问数组的值。但是,我似乎找不到一种方法使数组运行在任意数字数组上。举一个具体的例子,假设我想使用值 [0.1, 0.75, 3, 25.5, 50]。这些数字总是可以增加,但不一定以任何其他方式在数学上相关。我知道我可以编写一个单独的文件并根据该文件的行号读取这些值,但这似乎有点矫枉过正。

如何将

#SBATCH --array
与任意和非整数数组值一起使用?

arrays jobs slurm sbatch
1个回答
0
投票

最简单的方法是使用中间 Bash 数组:

#!/bin/bash
#SBATCH ...
#SBATCH --array=0-4

ARGS=(0.1 0.75 3 25.5 50)

./script.py ${ARGS[$SLURM_ARRAY_TASK_ID]}

这将有效地提交一个包含 5 个作业的数组,其中每个作业都将运行

script.py
,其值在
$ARGS
中,其索引是
$SLURM_ARRAY_TASK_ID

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