在GridEngine集群的多个节点上运行作业

时间:2010-10-06 13:31:26

标签: python sungridengine qsub

我可以访问一个128核集群,我想在其上运行并行作业。集群使用Sun GridEngine,我的程序编写为使用Python 2.5.8上的Parallel Python,numpy,scipy运行。在单个节点(4核)上运行作业比单个核心提高了约3.5倍。我现在想把它提升到一个新的水平,并将作业分成~4个节点。我的qsub脚本看起来像这样:

#!/bin/bash
# The name of the job, can be whatever makes sense to you
#$ -N jobname

# The job should be placed into the queue 'all.q'.
#$ -q all.q

# Redirect output stream to this file.
#$ -o jobname_output.dat

# Redirect error stream to this file.

#$ -e jobname_error.dat

# The batchsystem should use the current directory as working directory.
# Both files will be placed in the current
# directory. The batchsystem assumes to find the executable in this directory.
#$ -cwd

# request Bourne shell as shell for job.
#$ -S /bin/sh

# print date and time
date

# spython is the server's version of Python 2.5. Using python instead of spython causes the program to run in python 2.3
spython programname.py

# print date and time again
date

有没有人知道如何做到这一点?

1 个答案:

答案 0 :(得分:2)

是的,您需要在脚本中包含Grid Engine选项-np 16,如下所示:

# Use 16 processors
#$ -np 16

或在提交脚本时在命令行上。或者,对于更长久的安排,请使用.sge_request文件。

在我曾经使用的所有GE安装中,这将根据需要在尽可能少的节点上为您提供16个处理器(或处理器核心),因此如果您的节点有4个核心,您将获得4个节点,如果他们有8 2等等。要开始工作,比如8个节点上的2个核心(如果每个进程需要大量内存,你可能想要这样做)稍微复杂一些,你应该咨询你的支持团队。