我有一个将数据结构拆分成块的脚本。使用扭矩作业阵列处理块,然后合并回单个结构。
合并操作取决于作业数组的完成情况。如何使合并操作等待扭矩作业阵列完成?
$ 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:脚本文件'job1'无法加载 - 没有这样的文件或目录。
答案 0 :(得分:2)
的输出
qsub -t 1-100 -l nodes=1:ppn=40,walltime=48:00:00,vmem=120G -N job1 ./job.sh
包含jobid。 所以下面应该在bash中工作:
FIRST=`qsub first_1.sh`
qsub -W depend=afterok:$FIRST second_1.sh
答案 1 :(得分: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 []。泊坞窗)
#!/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