在SLURM集群上尚未完成以前的工作时,使用snakemake提交新工作

时间:2019-03-09 03:27:11

标签: hpc slurm snakemake

我在Snakemake集群上运行SLURM,但遇到了这样的问题:该集群一次只能提交多个(约20个)作业。运行snakemake.sh后,即:

#!/bin/bash

INPUT_DIR=...

snakemake -j 190 --latency-wait 1000 --cluster-config cluster.json --
cluster "sbatch -A {cluster.A} -p {cluster.p} -t {cluster.time} --
output {cluster.output} --error {cluster.error} --nodes {cluster.nodes}
--ntasks {cluster.ntasks} --cpus-per-task {cluster.cpus} --mem {cluster.mem}"

运行20个作业(而不是190个),所以我最终等待所有20个作业完成,然后重新运行脚本。这显然不是最佳的。假设有15个工作完成,但5个工作仍在运行,是否有办法以某种方式提交另外15个工作?

1 个答案:

答案 0 :(得分:1)

一些想法...:

  • 您确定可以在以前的作业完成之前提交其他作业吗?例如,下游作业可能需要由前20个作业生成的文件作为输入。合并文件的规则可能就是这种情况。

  • 您说集群允许我一次仅提交大量(约20个)工作。也许检查问题出在集群而不是snakemake。尝试提交一堆虚拟作业,看看slurm是否在队列中接受它们,

就像(未经测试,只是想出主意):

for i in {1..30}
do
    sbatch --wrap "sleep 30 && touch test${i}.tmp" 
done