2

我是计算流体动力学 (CFD),但我不太了解 mpi。

由于繁重的 CFD 工作需要 Infiniband 支持,人们说 mvapich 通常比其他 mpi 实现要好得多。我想知道这是真的吗?任何人有任何我可以查看的真实经验和参考资料吗?以及为什么 mvapich 比 openmpi 等更好?是Infiniband公司写的还是什么?

非常感谢!

4

3 回答 3

8

所以答案是“可能不会,反正也没关系”。

您使用 MPI API 编写代码,并且您始终可以安装多个 MPI 库并针对每个库进行测试,就像您可能使用多个 LAPACK 实现一样。如果您的应用程序始终更快,请使用它。但是 MPI 社区非常关注性能,免费的竞争对手都是开源的,并且在论文中发表了他们的方法,并且都发布了大量的基准测试。友好的竞争与开放性相结合,往往意味着任何实现都不会长期具有显着的性能优势。

在我们的大型 x86 集群上,我们使用 MPICH2、OpenMPI、MVAPICH2 和 IntelMPI 完成了“真实世界”和微基准测试。在三个开源版本中,没有明显的赢家;在某些情况下,一个人会赢 10-20%,在其他情况下,它会输掉相同的金额。在我们有兴趣深入研究细节以找出原因的少数情况下,这通常只是诸如急切限制或不同集体算法之间的交叉之类的默认问题,并且通过设置几个环境变量,我们可以获得性能在他们之间的噪音之中。在其他情况下,性能优势仍然存在,但要么不够大,要么不够一致,我们无法进一步调查。

(花费大量资金的IntelMPI明显且几乎始终如一地更快,尽管我们认为在那里取得的重大胜利是大幅缩短了大型工作的启动时间。)

MVAPICH 是最早真正追求 Infiniband 性能的 MPI 实现之一,在拥有大量 Myrinet 经验之后,它们确实在相当长的一段时间内拥有显着优势,并且可能在基准测试中它们仍然获胜;但最终并没有取得一致且重要的性能胜利,我们选择 OpenMPI 作为我们主要的开源 MPI 选项。

于 2012-10-26T01:01:24.023 回答
8

我同意 Jonathan 关于答案的观点,并从集群管理的角度补充几点。

作为一个有时会涉足集群管理的人,我要补充一点,在大型集群上调整 InfiniBand 并不是一件容易的事。您必须确保 OFED 堆栈很好地位于您的内核上。硬件没有故障,交换机按预期工作,在持续模式下没有性能问题,应用程序正确映射到 InfiniBand 拓扑等等。

OpenMPI 堆栈与 MPICH/MVAPICH 有很大不同。我发现 OpenMPI 组件架构比 MPICH/MVAPICH 的架构更容易找到和调试问题,而 MPICH/MVAPICH 架构更单一。

说到供应商,记得MPICH来自 Argonne 的 MCS 部门。

更新:从 3.1 版开始,MPICH 通过 ib 网络模块支持 OFED InfiniBand。从 3.2 开始,MPICH 还将支持 Mellanox MXM 接口。

MVAPICH是由俄亥俄州立大学 CS&E 部门的人员基于 MPICH 资源构建的。

许多硬件供应商都在 MPICH 或 MVAPICH 之上构建,以便为其各自的硬件提供 InfiniBand 支持。一个例子是英特尔 MPI。另一个是伏尔泰 MPI

OpenMPI由思科等 InfiniBand 交换机供应商支持的多个团队开发。

HP MPI曾经是另一个非常好的通用集群 MPI 实现,目前可从 Platfrom 获得。

于 2012-10-26T05:44:19.743 回答
2

CFL 代码不能很好地扩展。

我不能直接与 MVAPICH2 交谈,但我建议使用集群本地的任何 MPI。因此,如果您使用的是 Cray 机器,您将使用 Cray 的 MPI。它像魔术一样工作。使用供应商推荐的 mpi 会有很大的不同。

直接回答您的问题,如果您的消息大小在短范围内,MVAPICH2 有一个胜过 OpenMPI 的最佳位置。我认为您的 CFL 代码可能在此范围内。在大型集群上,我发现 MVAPICH2 在超过 2k PE 上运行时出现延迟值问题——但人们不会在 2k PE 上运行 CFL。

最终,有足够的动机来检验这一理论。你在运行 OpenFOAM 的哪个代码,Fluent?

于 2012-10-25T21:41:39.027 回答