在集群的工作节点上使用子进程提交Qsub作业

1 投票
1 回答
743 浏览
提问于 2025-04-18 08:32

我正在尝试用qsub提交一个Python任务,这个任务又会通过subprocess和qsub提交其他几个任务。

我使用下面的两个bash脚本来提交这些任务。run_test是第一个提交的脚本,而run_script是通过subprocess提交的。

$ cat run_test
#$ -cwd
#$ -V
#$ -pe openmpi 1
mpirun -n 1 python test_multiple_submit.py

$ cat run_script
#$ -cwd
#$ -V
#$ -pe openmpi 1
mpirun -n 1 python $1

我在第二个脚本中遇到了问题,似乎在mpirun调用时卡住了。之前我在bash中收到过一个关于'模块'找不到的错误,但最近这个问题消失了。

下面是一个简化版的Python脚本

import subprocess

subprocess.Popen(cmd)

subprocess.Popen('qsub run_script '+input)

<Some checks to see if jobs are still running>

第一个subprocess在当前节点上运行一个任务,第二个应该把任务外包到另一个节点,然后有一些检查来看看这些任务是否还在运行。还有其他一些部分是用来提交其他任务的,但我很确定这不是脚本的问题。

有没有人能帮我分析一下为什么第二个脚本会失败呢?

1 个回答

2

我发现集群上的计算节点并不是提交主机,所以我遇到了一个错误。唯一的提交主机是头节点。

qconf -ss

上面列出了提交主机。作为管理员,添加一个节点到提交主机列表的方法如下:

qconf -as < host name>

撰写回答