无法在 sge 文件中提交作业

job can't be submitted inside sge file

我想通过 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 作业吗?如果没有,是否有其他方法可以做这样的事情?

通常的方法是从您登录的一台主机提交所有作业,提交您的作业,并检查作业状态。提交的作业计划在集群中的计算节点上执行。如果你有多个作业和作业之间的依赖关系,你可以向作业调度程序声明依赖关系。例如,您可以告诉调度程序在开始作业 B 之前等待作业 A 完成。

第一个作业(run.sge)被提交到的节点,compute-2-9.local,也必须是您调用的提交节点qsub 再次出现在 run_inp.sge 中。 qsub 命令只允许在提交节点上使用。目前 compute-2-9.local 只是一个执行节点,因此会出现错误。但是,正如@Steve 提到的那样,最好为此使用作业依赖项,除非您正在尝试 "incept" SGE!