我有一个作业脚本,它运行某个 python 脚本,并使用 argparsing 提供的参数。我知道,当我想要运行这项作业时,我几乎总是希望不仅提交一项作业,而且还希望同时提交多项作业,并使用一个特定参数的不同值。我已经阅读了几篇关于为此使用 slurm 数组的文章,例如通过设置: 作业脚本顶部的
#SBATCH --array=1-10
,然后在调用 python 脚本中使用 $SLURM_ARRAY_TASK_ID
访问数组的值。但是,我似乎找不到一种方法使数组运行在任意数字数组上。举一个具体的例子,假设我想使用值 [0.1, 0.75, 3, 25.5, 50]。这些数字总是可以增加,但不一定以任何其他方式在数学上相关。我知道我可以编写一个单独的文件并根据该文件的行号读取这些值,但这似乎有点矫枉过正。
如何将
#SBATCH --array
与任意和非整数数组值一起使用?
最简单的方法是使用中间 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