SLURM独特的多次运行

时间:2018-06-22 14:41:19

标签: linux bash slurm

我正在尝试编写一个脚本,该脚本将从lambda数组中获取输入,并为每个lambda进行100次不同的运行(评估)。这就是到目前为止。

.module.ts

1 个答案:

答案 0 :(得分:1)

我认为您正在过度处理代码。更容易:

#!/bin/bash -l

#SBATCH --qos=regular
#SBATCH --nodes=20
#SBATCH --time=120:00:00
#SBATCH --job-name=sis_model
#SBATCH --array=0-19
#SBATCH --distribution=block

lambda=(0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1)

for ip1 in {1..100}
do
    srun ./test ${lambda[$SLURM_ARRAY_TASK_ID]}
done

要注意的事情:array命令从0到19,而不是从0到20。lambda列表中只有20个元素。您的第一个作业数组应该为零,因为列表中的第一个元素是数字零。如果您更喜欢1..20模式,则在访问lambda数组时必须减去一个。

此外,如果您使用作业数组并行处理lambda中的其他元素,则无需在每个作业中都处理所有这些元素。只需让系统为每个作业处理一个λ即可。

与第一条评论有关,如果您希望每个lambda 100个输出,则应迭代100次,而不是101次。

最后要考虑的是,您的lambda可以即时计算,以防您的列表越来越大并保持规则。扩展列表仅在您无法轻松计算值时对我有用。但是您的lambda == 0.05 *(1 + $ SLURM_ARRAY_TASK_ID)。