我正在尝试编写PBS脚本。
我必须在群集中使用4个节点并运行4次可执行程序。困难在于4个执行必须并行运行,逐个节点
目前,我刚刚分配了节点
#PBS -l nodes=4:ppn=1
问题是我不知道如何确保程序并行运行。我该怎么办?
答案 0 :(得分:1)
如果您不需要您的程序与其他副本进行通信,则您不需要MPI。 MPI代表消息传递接口(MPI Forum Website),是编写并行程序最流行的方式。网上有很多教程可以通过快速搜索找到。我建议看看它们。您可以自己安装MPI库,在自己的机器上进行测试。它们在大多数包管理器中都可用。最受欢迎的开源实现是MPICH和Open MPI。如果您从头开始,请尝试获取最新版本,因为您将从各个社区获得更多帮助。
您可以使用mpiexec
执行非MPI程序,它将在多个节点上启动(假设您已正确设置),但它不会做任何事情来让它们进行通信。这必须明确地完成(再次参见MPI教程)。
如果您不打算在进程之间进行通信(并行计算),我不得不想知道为什么要在整个群集中运行同一程序的多个副本。我们唯一想到的是简单的集群维护实用程序,但是有比PBS / MPI设置更好的方法,我想如果你正在进行集群维护,你已经知道了什么用于此。
答案 1 :(得分:1)
pbsdsh是一种非常简单的方法来完成你所说的。
# this will launch one copy of <executable> on each execution slot. For -l nodes=4:ppn=1
# it will launch it once per node.
pbsdsh <executable>
有时您必须提供pbsdsh的完整路径,具体取决于您的环境。它默认为/ usr / local / bin / pbsdsh。
答案 2 :(得分:0)
如果您不确定您的进程是否会在多个节点上同时启动,则可以在代码中使用MPI_BARRIER
函数。这将阻止所有节点执行,直到它们都执行了此功能。