我可以访问一个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
有没有人知道如何做到这一点?
答案 0 :(得分:2)
是的,您需要在脚本中包含Grid Engine选项-np 16
,如下所示:
# Use 16 processors
#$ -np 16
或在提交脚本时在命令行上。或者,对于更长久的安排,请使用.sge_request
文件。
在我曾经使用的所有GE安装中,这将根据需要在尽可能少的节点上为您提供16个处理器(或处理器核心),因此如果您的节点有4个核心,您将获得4个节点,如果他们有8 2等等。要开始工作,比如8个节点上的2个核心(如果每个进程需要大量内存,你可能想要这样做)稍微复杂一些,你应该咨询你的支持团队。