从父 slurm 作业启动多个作业
Launch several jobs from a parent slurm job
我想启动一个作业,它启动 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
问题是整个脚本 运行ning 作为一个普通脚本,所以它不会为每个 "srun" 命令启动一个作业。因此,在第一个命令完成之前,下一个命令不会启动。
我怎样才能做到这一点,当我启动这个作业时,它会启动三个作业,这样它们就可以同时运行?
如果你想提交一份工作本身 提交 三份其他工作,那么正如@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-
) 必须与主提交脚本中请求的任务总数相匹配。因此上面的改编脚本。
我想启动一个作业,它启动 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
问题是整个脚本 运行ning 作为一个普通脚本,所以它不会为每个 "srun" 命令启动一个作业。因此,在第一个命令完成之前,下一个命令不会启动。
我怎样才能做到这一点,当我启动这个作业时,它会启动三个作业,这样它们就可以同时运行?
如果你想提交一份工作本身 提交 三份其他工作,那么正如@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-
) 必须与主提交脚本中请求的任务总数相匹配。因此上面的改编脚本。