1

我有一个将数据结构拆分为块的脚本。使用扭矩作业阵列处理块,然后合并回单个结构。

合并操作取决于作业数组的完成。如何让合并操作等待扭矩作业数组完成?

$ qsub --version
Version: 4.1.6

我的脚本如下:

# Splits the data structure and processes the chunks
qsub -t 1-100 -l nodes=1:ppn=40,walltime=48:00:00,vmem=120G ./job.sh
# Merges the processed chunks back into a single structure
./merge.sh

我努力了:

qsub -t 1-100 -l nodes=1:ppn=40,walltime=48:00:00,vmem=120G -N job1 ./job.sh
qsub -W depend=afterokarray:job1 ./merge.sh

并且:

qsub -t 1-100 -l nodes=1:ppn=40,walltime=48:00:00,vmem=120G -N job1 ./job.sh
qsub -hold_jid job1 ./merge.sh

都没有奏效。前者导致错误[qsub: 非法-W值],后者也导致错误:qsub: script file 'job1' cannot be loaded - No such file or directory。

4

2 回答 2

2

的输出

qsub -t 1-100 -l nodes=1:ppn=40,walltime=48:00:00,vmem=120G -N job1 ./job.sh

包含作业标识。所以以下应该在bash中工作:

FIRST=`qsub first_1.sh`
qsub -W depend=afterok:$FIRST second_1.sh
于 2013-10-22T12:49:20.153 回答
0

答案

您应该使用afterokarray

ID=$(qsub -t 1-100 -l nodes=1:ppn=40,walltime=48:00:00,vmem=120G -N job1 ./job.sh)
qsub -W depend=afterokarray:$(ID) ./merge.sh

另一个例子

这是另一个示例,假设您需要执行两次作业,然后再执行一次:

#!/bin/bash
#PBS -q batch
#PBS -l walltime=24:00:00
#PBS -o /app/run/KLFLO/nueva_tarea_0.$PBS_ARRAYID.out
#PBS -e /app/run/KLFLO/nueva_tarea_0.$PBS_ARRAYID.err
#PBS -N KLFLO_nueva_tarea_0
#PBS -t 1-2 # times 
sleep 20
/bin/cat /etc/hosts

在其他提交文件中执行qsub < nueva_tarea_2.bash他们使用 (10[].docker)

#!/bin/bash
#PBS -q batch
#PBS -l walltime=24:00:00
#PBS -o /app/run/KLFLO/nueva_tarea_2.$PBS_ARRAYID.out
#PBS -e /app/run/KLFLO/nueva_tarea_2.$PBS_ARRAYID.err
#PBS -N KLFLO_nueva_tarea_2
#PBS -t 1-2 # times
#PBS -W depend=afterokarray:10[].docker
/bin/cat /etc/hosts
于 2016-12-13T01:29:24.367 回答