2

我正在尝试编写 PBS 脚本。

我必须在一个集群中使用 4 个节点并运行 4 次可执行程序。困难在于 4 个执行必须并行运行,一个节点一个

目前,我刚刚分配了节点

#PBS -l nodes=4:ppn=1

问题是我不知道如何确保程序并行运行。我该怎么做 ?

4

3 回答 3

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。

于 2013-10-07T20:51:38.930 回答
1

如果您不需要您的程序与自身的其他副本进行通信,则不需要 MPI。MPI 代表消息传递接口(MPI 论坛网站),是编写并行程序的最流行方式。网上有很多教程,你可以通过快速搜索找到。我建议看看他们。您可以通过自己安装 MPI 库在自己的机器上进行测试。它们在大多数包管理器中都可用。最流行的开源实现是MPICHOpen MPI。如果您是从头开始,请尝试获取最新版本,因为这样您将从各个社区获得更多帮助。

您可以执行一个非 MPI 程序,mpiexec它将跨多个节点启动(假设您已正确设置),但它不会做任何事情来使它们进行通信。这必须明确地完成(再次,请参阅 MPI 教程)。

如果您不打算在进程之间进行通信(并行计算),我不得不想知道为什么要在一开始就跨集群运行同一程序的多个副本。唯一想到的是简单的集群维护实用程序,但是有比 PBS/MPI 设置更好的方法,我想如果你在做集群维护,你已经知道要使用什么了.

于 2013-10-07T17:34:27.937 回答
0

如果您不确定您的进程是否会在多个节点上同时启动,您可以MPI_BARRIER在代码中使用该函数。这将阻止所有节点执行,直到它们都执行了这个函数。

于 2013-10-06T20:58:14.930 回答