我想通过sge文件提交sge作业。
例如,我有 run.sge 文件,如下所示:
## SGE options
#$ -cwd
#$ -l mem_free=2G
##$ -q all.q@compute-2-3.local
#$ -pe mpich 4
#$ -S /bin/bash
SCRATCH_DIR=/state/partition1/$USER-$JOB_ID
mkdir $SCRATCH_DIR
qsub run_inp.sge
rmdir $SCRATCH_DIR
run_inp.sge 文件如下:
## SGE options
#$ -cwd
#$ -l mem_free=2G
##$ -q all.q@compute-2-3.local
#$ -pe mpich 4
#$ -S /bin/bash
INPUTFILE="main.inp"
JOB="main"
SCRATCH_DIR=/state/partition1/$USER-$JOB_ID
mkdir $SCRATCH_DIR
/share/apps/simula/Commands/abaqus double inp=$INPUTFILE scratch=$SCRATCH_DIR job=$JOB mp_mode=mpi interactive
rmdir $SCRATCH_DIR
每当我通过
提交工作qsub run.sge
我收到了这个错误:
Unable to run job: denied: host "compute-2-9.local" is no submit host.
Exiting.
但是如果我直接提交run_inp.sge,它可以正常工作:
qsub run_inp.sge
我的问题是,我可以在sge工作中提交sge工作吗?如果没有,是否有替代方法来做这样的事情?
答案 0 :(得分:1)
通常的做法是从您登录的主机提交所有作业,提交作业并检查作业状态。提交的作业计划在群集中的计算节点上执行。如果作业之间有多个作业和依赖关系,则可以向作业计划程序声明依赖关系。例如,您可以告诉调度程序在启动作业B之前等待作业A完成。
答案 1 :(得分:1)
第一个作业( run.sge )提交的节点compute-2-9.local
,在再次呼叫qsub
时,也必须是提交节点run_inp.sge 即可。仅在提交节点上允许qsub
命令。目前compute-2-9.local
仅是执行节点,因此是错误。但是,正如@Steve所提到的,最好使用作业依赖关系,除非你尝试“incept”SGE!