【问题标题】:OpenMP or MPI or OpenMPI for a distributed memory cluster?分布式内存集群的 OpenMP 或 MPI 或 OpenMPI?
【发布时间】:2011-05-25 19:44:00
【问题描述】:

我想在 100 节点分布式内存集群中并行化 C 串行代码。该集群由 25 个刀片组成,每个刀片由 infiniband 提供 4 个内核。在我刚刚使用 PBS 在不同节点之间传播程序的几个串行运行之前。现在我想知道:

  1. 在这种情况下,OpenMP 或 MPI 或 OpenMPI 的最佳选择是什么(目前我不想尝试混合方法,因为我开始学习)?
  2. 在哪里可以找到示例/教程?
  3. 对于带有主 for 循环的简单串行代码,OpenMP/MPI/OpemMPI 是否总是比 PBS 之类的排队方法执行得更好?

【问题讨论】:

    标签: c cluster-computing openmp mpi openmpi


    【解决方案1】:

    OpenMP 适用于共享内存计算机,我相信您不能将它与分布式内存一起使用。所以你必须使用 MPI。

    一个好的 MPI 教程是: https://computing.llnl.gov/tutorials/mpi/

    【讨论】:

    【解决方案2】:

    分布式内存排除了用于共享内存计算的 OpenMP。 MPI 是一种标准,而 OpenMPI 是该标准的实现(还有其他标准,例如 MPICH 或 LAM-MPI)。所以

    1. MPI,而 OpenMPI 是其完美的实现。但是,我认为在没有安装 MPI 的情况下找到像您这样的集群是相对不寻常的,因此更好的选择可能是您已经安装的 MPI。您当然应该就此与系统管理人员交谈。而且您当然不应该在不知道自己在做什么的情况下尝试在集群上安装 OpenMPI。

    2. 到处都是。从good place 开始。

    3. PBS 是一个作业调度系统。在像您这样的集群上,您通常会同时安装 MPI 和作业调度程序,如果不是 PBS,那么最有可能的是 Grid Engine。

    正如您已经发现的那样,您可以使用 PBS(或 Grid Engine)将多个串行作业分派到一个集群。您还可以使用它将单个并行作业分派到集群,以便在您要求的任意数量的处理器上执行。不过,您的问题提出了一种可能性,即您的问题是令人尴尬的并行,而 MPI 对您来说可能是矫枉过正。在你承诺并行化你的程序之前,谷歌一下斜体字的术语——除非你想纯粹地享受这无疑会带来的乐趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 2015-12-10
      • 2022-01-19
      • 1970-01-01
      • 2012-07-10
      • 2012-05-09
      • 1970-01-01
      相关资源
      最近更新 更多