【问题标题】:Parallel execution with a PBS script使用 PBS 脚本并行执行
【发布时间】:2013-10-06 20:18:06
【问题描述】:

我正在尝试编写 PBS 脚本。

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

目前,我刚刚分配了节点

#PBS -l nodes=4:ppn=1

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

【问题讨论】:

  • 您正在编写 MPI 程序吗?您的程序是否以某种方式进行通信?使用 PBS 启动程序基本上会在集群的不同节点上创建 4 个程序副本,但不会使它们通信。您需要使用诸如 MPI 之类的东西来让它们一起执行。
  • 将其移至答案更清楚您现在在问什么,我的回答无法满足字符数限制。
  • 这个帖子有帮助吗? stackoverflow.com/questions/18948727/…

标签: parallel-processing mpi pbs torque


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    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。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-23
        • 1970-01-01
        • 2016-09-13
        相关资源
        最近更新 更多