用于分布式内存集群的OpenMP或MPI或OpenMPI?

Ope*_*way 5 c cluster-computing mpi openmp openmpi

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

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

Hig*_*ark 15

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

  1. MPI和OpenMPI是一个非常值得尊敬的实现.但是,我认为在没有安装MPI的情况下找到这样的集群是相对不寻常的,因此更好的选择可能是您已经拥有的MPI安装.你当然应该和系统的经理谈谈这件事.当然,您不应该在不知道自己在做什么的情况下尝试在群集上安装OpenMPI.

  2. 到处都是.这是一个 很好的起点.

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

正如您已经发现的那样,您可以使用PBS(或Grid Engine)来将多个串行作业分派给群集.您还可以使用它将单个并行作业分派给群集,以便在您要求的许多处理器上执行.但是,你的问题提出了这样的可能性,即你的问题非常平行并且MPI可能对你来说太过分了.在您承诺将自己的程序并行化之前,Google会使用斜体术语 - 除非您想要纯粹的享受,这无疑会产生结果.