我在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个工作?
答案 0 :(得分:1)
一些想法...:
您确定可以在以前的作业完成之前提交其他作业吗?例如,下游作业可能需要由前20个作业生成的文件作为输入。合并文件的规则可能就是这种情况。
您说集群允许我一次仅提交大量(约20个)工作。也许检查问题出在集群而不是snakemake。尝试提交一堆虚拟作业,看看slurm是否在队列中接受它们,
就像(未经测试,只是想出主意):
for i in {1..30}
do
sbatch --wrap "sleep 30 && touch test${i}.tmp"
done