PBS使用不同的参数运行同一程序的多个实例

时间:2013-02-13 20:05:16

标签: parallel-processing cluster-computing pbs serial-processing

如何多次运行相同的程序,但是通过PBS提交的群集上的每个实例具有不同的参数。此外,是否可以将这些程序中的每一个指定到一个单独的节点?目前,如果我有一个带有以下脚本的PBS:

#PBS -l nodes=1:ppn=1
/myscript

它将在单个节点上运行一次单个程序。如果我使用以下脚本:

#PBS -l nodes=1:ppn=1
/mscript -arg arg1 &
/myscript -arg arg2

我相信这将以串行方式运行每个程序,但它只使用一个节点。我可以声明多个节点,然后将特定的节点委托给我希望运行的程序的每个实例吗?

任何帮助或建议都会非常感激。如果我不清楚任何事情或使用不正确的术语,我道歉...我对集群计算很新。

2 个答案:

答案 0 :(得分:0)

您希望使用MPI形式执行此操作。 MPI代表消息传递接口,并且有许多库实现接口。我建议使用OpenMPI,因为它与PBS很好地集成。如你所说,你是新人,你可能会欣赏tutorial.

答案 1 :(得分:0)

GNU Parallel非常适合此目的。您的案例的示例PBS脚本:

#PBS -l nodes=2:ppn=4 # set ppn for however many cores per node on your cluster
#Other PBS directives

module load gnu-parallel   # this will depend on your cluster setup

parallel -j4 --sshloginfile $PBS_NODEFILE /mscript -arg {} \
  ::: arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8

GNU Parallel将处理到各个节点的ssh连接。我在命令行中用参数写出了示例,但您可能想要从文本文件中读取参数。以下是man pagetutorial的链接。选项-j4应与ppn(每个节点的核心数)匹配。