我是计算流体动力学家(CFD),但我不太了解mpi。
由于重型CFD工作需要Infiniband支持,人们说mvapich通常比其他mpi实现要好得多。我想知道这是真的吗?任何人都有我可以看到的真实经验和参考资料吗?为什么mvapich比openmpi等更好?它是由Infiniband公司写的还是什么?
非常感谢!
答案 0 :(得分:8)
所以答案是“可能不是,反正无关紧要”。
您使用MPI API编写代码,并且您可以随时安装多个MPI库并针对每个MPI库进行测试,就像使用多个LAPACK实现一样。如果您的应用程序始终更快,请使用它。但MPI社区非常关注性能,免费的竞争对手都是开源的,并在论文中发布他们的方法,并且都发布了许多基准测试。友好的rivalary与开放性相结合,往往意味着没有实施具有显着的性能优势。
在我们的大型x86集群上,我们使用MPICH2,OpenMPI,MVAPICH2和IntelMPI完成了“真实世界”和微基准测试。在三个开源版本中,没有明显的赢家;在某些情况下,一个人会赢得10-20%,而在另一些情况下,他们会损失相同的金额。在我们有兴趣深入了解细节以找出原因的那几个场合,通常只是默认情况下,例如急切限制或不同集体算法之间的交叉,并通过设置几个环境变量我们获得了性能他们之间的噪音。在其他情况下,性能优势仍然存在,但要么不够大,要么不够稳定,无法进一步调查。
(英特尔MPI,它需要花费大量资金, 显着且大致一致地更快,尽管我们认为大赢的是大大改善了大型工作的启动时间。)
MVAPICH是第一批真正追求Infiniband性能的MPI实施之一,在拥有Myrinet的丰富经验之后,他们确实在相当长的一段时间内拥有了显着的优势,而且他们仍有可能取得胜利的基准。但最终没有一致且重要的性能获胜,我们选择OpenMPI作为我们的主要开源MPI选项。
答案 1 :(得分:8)
我同意Jonathan关于答案的意见,并从集群管理角度添加几点。
作为一个有时会进入集群管理的人,我想补充说,在大型集群上调整InfiniBand并不是一件容易的事。您必须确保OFED堆栈很好地适用于您的内核。硬件没有故障且交换机按预期工作,在持续模式下没有性能问题,并且应用程序正确映射到InfiniBand拓扑上等等。
OpenMPI堆栈与MPICH / MVAPICH有很大不同。我发现OpenMPI组件架构比MPICH / MVAPICH的架构更容易找到和调试问题,我发现它更加单一。
说到供应商回忆 MPICH 来自Argonne的MCS部门。
更新:由于版本3.1 MPICH通过ib网络模块支持OFED InfiniBand。由于3.2 MPICH也将支持Mellanox MXM接口。
MVAPICH 是由俄亥俄州立大学CS& E部门的人员在MPICH资源之上构建的。
许多硬件供应商都在MPICH或MVAPICH之上构建,以便为其各自的硬件提供InfiniBand支持。一个例子是英特尔MPI 。另一个是 Voltaire MPI 。
OpenMPI 是由思科等InfiniBand交换机供应商支持的几个团队开发的。
HP MPI 曾经是另一个非常好的通用群集的MPI实施,目前可从Platfrom获得。
答案 2 :(得分:2)
CFL代码不能很好地扩展。
我无法直接与MVAPICH2对话,但我建议您使用群集中原生的MPI。因此,如果您使用的是Cray机器,那么您可以使用Cray的MPI。它就像魔法一样。使用您的供应商推荐的mpi有很大的不同。
要直接回答您的问题,如果您的邮件大小落在短距离范围内,MVAPICH2就会有一个最佳点,它会击败OpenMPI。我认为你的CFL代码可能属于这个范围。在大型集群上,我发现在运行超过2k PE时MVAPICH2出现了延迟值出现问题 - 但人们不会在2k PE上运行CFL。
最终,有足够的动力来测试这个理论。你在运行OpenFOAM,Fluent的哪个代码?