我有一个将数据结构拆分成块的脚本。使用torque作业数组处理这些块,然后将其合并回单个结构。
合并操作依赖于作业数组的完成。如何让合并操作等待torque作业数组完成?
$ 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‘无法加载-没有这样的文件或目录。
发布于 2013-10-22 20:49:20
的输出
qsub -t 1-100 -l nodes=1:ppn=40,walltime=48:00:00,vmem=120G -N job1 ./job.sh包含作业the。因此,下面的代码应该可以在bash中使用:
FIRST=`qsub first_1.sh`
qsub -W depend=afterok:$FIRST second_1.sh发布于 2016-12-13 09:29:24
答案
您应该使用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/hostshttps://stackoverflow.com/questions/19517923
复制相似问题