【问题标题】:Launch several jobs from a parent slurm job从父 slurm 作业启动多个作业
【发布时间】:2020-05-25 12:34:40
【问题描述】:

我想启动一个作业,它会启动 3 个作业以允许它们同时运行。这是我的脚本:

#!/bin/sh
#SBATCH -N 1
#SBATCH -n 3
#SBATCH -c 1
#SBATCH -t 00:10:00

# Job 1:
srun -n 10 -c 1 -t 3:00:00 python program.py sample1.bam -output_dir1

# Job 2:
srun -n 10 -c 1 -t 3:00:00 python program.py sample2.bam -output_dir2

# Job 3:
srun -n 10 -c 1 -t 3:00:00 python program.py sample3.bam sample3normal.bam -output_dir3

问题在于整个脚本作为普通脚本运行,因此它不会为每个“srun”命令启动作业。因此,在第一个命令完成之前,下一个命令不会启动。

我怎样才能得到它,当我启动这个作业时,它会启动三个作业,所以它们可以同时运行?

【问题讨论】:

  • 我相信您所要做的就是将 srun 转换为 sbatch 调用:)。另一种选择是用 & 分隔命令,这应该使它们并行运行

标签: slurm


【解决方案1】:

如果您想提交一份自己提交其他三份工作的工作,那么正如@Maarten-vd-Sande 所说,您可以将srun 调用替换为sbatch 调用:

sbatch -n 10 -c 1 -t 3:00:00 --wrap "python program.py sample1.bam -output_dir1"

这将提交三个彼此独立的工作。主要工作将立即终止。但在这种情况下,请求-n 3 进行如此简单的工作是没有意义的。

如果您想提交一个启动三个任务的工作,您可以这样做:

#!/bin/sh
#SBATCH -N 1
#SBATCH -n 30
#SBATCH -c 1
#SBATCH -t 03:10:00

# Job 1:
srun -n 10 -c 1 -t 3:00:00 python program.py sample1.bam -output_dir1 &

# Job 2:
srun -n 10 -c 1 -t 3:00:00 python program.py sample2.bam -output_dir2 &

# Job 3:
srun -n 10 -c 1 -t 3:00:00 python program.py sample3.bam sample3normal.bam -output_dir3 &

wait

但是,在提交脚本中设置 10 分钟的时间限制和在任务中设置 3 小时的时间限制是没有意义的。此外,srun 请求的任务总数 (n-) 必须与主提交脚本中请求的任务总数相匹配。因此,上面的改编脚本。

【讨论】:

    猜你喜欢
    • 2018-10-07
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 2013-03-15
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多