提交限制高于 MaxArraySize 的 slurm 数组作业?
Submitting slurm array job with a limit above MaxArraySize?
我需要提交一个 slurm 数组,它将 运行 相同的脚本 18000 次(对于独立基因),我想以一种不会给我的 Uni 集群带来问题的方式来完成。
目前管理员设置的MaxArraySize
为2048
。我打算手动设置我的选项,如:
第一个数组脚本:
#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 输入文件中的行。
我需要提交一个 slurm 数组,它将 运行 相同的脚本 18000 次(对于独立基因),我想以一种不会给我的 Uni 集群带来问题的方式来完成。
目前管理员设置的MaxArraySize
为2048
。我打算手动设置我的选项,如:
第一个数组脚本:
#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 输入文件中的行。