提交限制高于 MaxArraySize 的 slurm 数组作业?

Submitting slurm array job with a limit above MaxArraySize?

我需要提交一个 slurm 数组,它将 运行 相同的脚本 18000 次(对于独立基因),我想以一种不会给我的 Uni 集群带来问题的方式来完成。

目前管理员设置的MaxArraySize2048。我打算手动设置我的选项,如:

第一个数组脚本:

#SBATCH --array=2-2000%300 

N.B.: 这应该从 2 开始,因为我想跳过我正在使用数组阅读的文件的第一行。

下一个脚本:

#SBATCH --array=2001-4000%300

等等...

但是 slurm 不喜欢数组中大于 2048 的值。

是否有另一种方法可以做到这一点,它不涉及为单个基因提交脚本的 for 循环?

(我能想到的都是 for 循环,但后来我失去了 slurm [%300] 的约束选项,以避免阻塞调度程序。)

您可以使用

提交两个作业
#SBATCH --array=1-2000%300 

并且,在脚本中,基于 SLURM_ARRAY_TASK_ID 构建行索引,而不是直接使用它。第一份工作:

ROWINDEX=$((SLURM_ARRAY_TASK_ID+1))

第二份工作:

ROWINDEX=$((SLURM_ARRAY_TASK_ID+2001))

等等。

然后使用 ROWINDEX select 输入文件中的行。