当我在集群上启动计算时,我通常会有一个单独的程序在最后进行后处理:
sbatch simulation
sbatch --dependency=afterok:JOBIDHERE postprocessing
Run Code Online (Sandbox Code Playgroud)
我想避免错误输入并自动插入好的作业ID.任何的想法?谢谢
我想向我的群集上的几个队列提交模拟.只要一个队列启动它,它就会被其他队列取消.我知道它可能是不明确的,因为几个工作可能会在几个队列上同时开始.
监视队列的bash脚本可能会这样做.提交作业时是否可以直接使用qsub?
编辑:下面是一个使用bash脚本的工作示例.这可能不是最佳的,因为它需要(慢)磁盘访问.
#!/bin/bash -
#
# Exit in case of error
set -e
#
# Command-line argument is the name of the shared file
fid=$*
if [ -f ${HOME}/.dep_jobs/${fid} ]; then
echo "Given name already used, abort."
exit 1
else
echo "Initialize case."
touch ${HOME}/.dep_jobs/${fid}
fi
#
# Submit master job and retrieve the ID
echo "Submitting master job"
MID=$(qsub -l select=1:ncpus=1:mpiprocs=1 -q queue1 run.pbs)
echo ${MID##* }
#
# Add the ID to the shared file
ln -s …Run Code Online (Sandbox Code Playgroud)