如何多次运行相同的程序,但是通过PBS提交的群集上的每个实例具有不同的参数。此外,是否可以将这些程序中的每一个指定到一个单独的节点?目前,如果我有一个带有以下脚本的PBS:
#PBS -l nodes=1:ppn=1
/myscript
它将在单个节点上运行一次单个程序。如果我使用以下脚本:
#PBS -l nodes=1:ppn=1
/mscript -arg arg1 &
/myscript -arg arg2
我相信这将以串行方式运行每个程序,但它只使用一个节点。我可以声明多个节点,然后将特定的节点委托给我希望运行的程序的每个实例吗?
任何帮助或建议都会非常感激。如果我不清楚任何事情或使用不正确的术语,我道歉...我对集群计算很新。
答案 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 page和tutorial的链接。选项-j4
应与ppn(每个节点的核心数)匹配。