我如何同时在多个目录中执行SLURM脚本?

问题描述 投票:0回答:1

我想同时从inwith多个目录中执行SLURM脚本。更具体地说,我有十个数组文件夹,它们从array_1array_10编号,我要从中执行脚本。在每个目录中,脚本会创建10个子目录,标记为${SLURM_ARRAY_TASK_ID}_ztag。但是,我必须分别从十个array_目录中的每个目录中手动执行SLURM脚本。当我不得不一遍又一遍地这样做时,这变得很麻烦。

[通常,使用shell脚本,这将是简单的for循环,但是由于[b0]无法由bash解释#SBATCH,所以我没有取得任何成功。当前脚本(分别在每个数组文件夹中运行)是:

#!/bin/bash
#SBATCH -o <some_thing>.o%j 
#SBATCH --time=<time> #specify the time
#SBATCH --array=1-10 #ten arrays

#SBATCH -c 1
#SBATCH -C dodeca96gb
#SBATCH --mem=<memory>

echo "SLURM_JOBID: " $SLURM_JOBID
echo "SLURM_ARRAY_TASK_ID: " $SLURM_ARRAY_TASK_ID
echo "SLURM_ARRAY_JOB_ID: " $SLURM_ARRAY_JOB_ID

mkdir ${SLURM_ARRAY_TASK_ID}_ztagA #creates 10 subdirs w/i ea. array
cd ${SLURM_ARRAY_TASK_ID}_ztagA

$ROSETTA3BIN/bin/rna_denovo.default.linuxgccrelease -s ./<dir>/*pdb -nstruct 100 -fasta ./<fastafile>.fasta -secstruct_file ./<dot-brackets>.secstruct

然后输入sbatch <filename>.slurm,脚本从脚本执行的任何目录中创建子目录,因此需要cd行,因此要同时从所有十个数组中执行该行将非常棘手。我已经尝试了以下各种组合:

#!/bin/bash
#SBATCH --array=1-10
#SBATCH --chdir=./array_%a
#SBATCH -o ./array_%a/<some_thing>.o%j #STDOUT
#SBATCH --time=<time>

#SBATCH -c 1
#SBATCH -C dodeca96gb
#SBATCH --mem=<memory>

echo "SLURM_JOBID: " $SLURM_JOBID
echo "SLURM_ARRAY_TASK_ID: " $SLURM_ARRAY_TASK_ID
echo "SLURM_ARRAY_JOB_ID: " $SLURM_ARRAY_JOB_ID

for i in {1..10}
do
    mkdir -p ./array_${i}/${SLURM_ARRAY_TASK_ID}_ztagA
    cd ./array_${i}/${SLURM_ARRAY_TASK_ID}_ztagA

$ROSETTA3BIN/bin/rna_denovo.default.linuxgccrelease -s ./<dir>/*pdb -nstruct 100 -fasta ./<fastafile>.fasta -secstruct_file ./<dot-brackets>.secstruct

wait
done

我尝试将for循环参数放在包括waitdone在内的各行之前/之后,但是我收到一条错误消息,提示它无法打开fasta,secstruct和或./dir 。我也尝试过先创建10个数组(这很简单),然后再做:

#!/bin/bash
for i in {1..10}
do
    sbatch ./array_{i}/<filename>.slurm
wait
done

但是这不会将输出文件或子目录放入数组文件夹;它要么把它们留在父母那里。

有什么建议吗?

bash hpc slurm sbatch
1个回答
0
投票

经过数天的反复尝试,我发现了。我编写了一个Shell脚本,该脚本在每个目录中执行SLURM,而不是尝试编辑SLURM脚本本身。

#!/bin/bash

for i in {1..10}
do
    cd array_${i}
    sbatch ./<name_of_slurm_script>.slurm
    cd ../
wait
done
© www.soinside.com 2019 - 2024. All rights reserved.