运行 slurm 作业数组

运行 slurm 作业数组

我有一个包含 23 个任务的 job_array.sh:

> angsd -i ./realigned_RSFV1A.bam -anc ./BF_genome.fa -gl 1 -doSaf 1 -doSnpStat 1 -doMajorMinor 1 -doMaf 1 -doGeno 6 -doCounts 1 -doPost 1 -nThreads 24 -out ./RSFV1A -sites ./beng_wbm_par15_varcal.pos
> angsd -i ./realigned_RSFV1B.bam -anc ./BF_genome.fa -gl 1 -doSaf 1 -doSnpStat 1 -doMajorMinor 1 -doMaf 1 -doGeno 6 -doCounts 1 -doPost 1 -nThreads 24 -out ./RSFV1B -sites ./beng_wbm_par15_varcal.pos
> angsd -i ./realigned_RSFV1C.bam -anc ./BF_genome.fa -gl 1 -doSaf 1 -doSnpStat 1 -doMajorMinor 1 -doMaf 1 -doGeno 6 -doCounts 1 -doPost 1 -nThreads 24 -out ./RSFV1C -sites ./beng_wbm_par15_varcal.pos

...

使用 slurm 脚本并行运行。

我在尝试:

#!/bin/bash
#SBATCH --mail-user 
#SBATCH --mail-type=ALL
#SBATCH -p std.q
#SBATCH --exclusive
#SBATCH --oversubscribe
#SBATCH --time=24:00:00     # 24 hours
#SBATCH --output=./HET.stdout
#SBATCH --job-name=HET
#SBATCH --array=1-23
#SBATCH --export=ALL

inds="$(seq -s ' ' 1 23)"
ind=${inds[$SLURM_ARRAY_TASK_ID]}
$ind

但它不起作用

我也尝试过:

eval $(sed "${SLURM_ARRAY_TASK_ID}q;d" ./job_array.sh)

它可以工作,但它会一个接一个地调用作业,而不是并行调用。所以同样耗时。

相关内容