MPICH与OpenMPI

MPICH与OpenMPI,mpi,hpc,openmpi,Mpi,Hpc,Openmpi,有人能详细说明MPI的OpenMPI和MPICH实现之间的区别吗? 这两个实现中哪一个更好?如果您使用的是开发而不是生产系统,请使用MPICH。MPICH有内置的调试器,而OpenMPI上次检查时没有 在生产中,开放式MPI很可能会更快。但是,您可能需要研究其他替代方案,例如英特尔MPI。我同意前面的海报。尝试这两种方法,看看哪个应用程序运行得更快,然后将其用于生产。它们都符合标准。如果它是你的桌面也可以。OpenMPI在Macbooks上是现成的,而MPICH似乎对Linux/Valgrind

有人能详细说明MPI的OpenMPI和MPICH实现之间的区别吗?
这两个实现中哪一个更好?

如果您使用的是开发而不是生产系统,请使用MPICH。MPICH有内置的调试器,而OpenMPI上次检查时没有


在生产中,开放式MPI很可能会更快。但是,您可能需要研究其他替代方案,例如英特尔MPI。

我同意前面的海报。尝试这两种方法,看看哪个应用程序运行得更快,然后将其用于生产。它们都符合标准。如果它是你的桌面也可以。OpenMPI在Macbooks上是现成的,而MPICH似乎对Linux/Valgrind更为友好。它在你和你的工具链之间


如果它是一个生产集群,您需要进行更广泛的基准测试,以确保它针对您的网络拓扑进行了优化。在生产集群上配置它将是您在时间上的主要区别,因为您必须使用RTFM。

两者都符合标准,因此从正确性的角度来看,使用哪一种并不重要。除非您需要某些功能,例如特定的调试扩展,否则请对这两种功能进行基准测试,并在硬件上为您的应用选择速度更快的功能。还考虑到其他MPI实现可能会提供更好的性能或兼容性,例如MVICICH(可以有最好的英飞凌性能)或英特尔MPI(广泛支持的ISV)。HP也在努力让他们的MPI通过大量ISV代码的认证,但我不确定在平台上销售后的情况如何…

首先,重要的是要认识到MPICH和开放MPI是如何不同的,即它们是为满足不同的需求而设计的。MPICH被认为是最新MPI标准的高质量参考实现,是满足特殊用途需求的衍生实现的基础。Open MPI针对的是常见情况,包括使用情况和网络管道

对网络技术的支持 Open MPI记录了他们的网络支持。MPICH在随每个版本分发的自述文件中列出了这些信息(例如,适用于3.2.1)。请注意,因为openmpi和MPICH都支持(aka libfabric)网络层,所以它们支持许多相同的网络。但是,libfabric是一个多方面的API,因此并非每个网络在这两个方面都受到相同的支持(例如,MPICH有一个基于OFI的IBM Blue Gene/Q实现,但我不知道在开放MPI中有同等的支持)。然而,基于OFI的MPICH和Open MPI的实现都在共享内存、以太网(通过TCP/IP)、Mellanox InfiniBand、Intel Omni Path以及其他可能的网络上工作。OpenMPI还支持这两个网络以及其他本机网络(即中间没有OFI)

在过去,关于MPICH的一个常见抱怨是它不支持InfiniBand,而OpenMPI支持InfiniBand。然而,MVAPICH和Intel MPI(以及其他)都是MPICH的衍生产品,它们都支持InfiniBand,因此如果有人愿意将MPICH定义为“MPICH及其衍生产品”,那么MPICH拥有极其广泛的网络支持,包括InfiniBand和专有互连,如Cray Seastar、Gemini和Aries以及IBM Blue Gene(/L、/P和/Q)。Open MPI也支持Cray Gemini互连,但Cray不支持其使用。最近,MPICH通过netmod(现已弃用)支持InfiniBand,但MVAPICH2具有广泛的优化功能,使其成为几乎所有情况下的首选实现

来自最新MPI标准的功能支持 硬件/平台支持的一个正交轴是MPI标准的覆盖范围。在这里,MPICH通常远远优于MPI。MPICH是MPI标准每个版本的第一个实现,从MPI-1到MPI-3。Open MPI最近才支持MPI-3,我发现一些MPI-3功能在某些平台上存在缺陷(当然,MPICH并不是没有bug的,但MPI-3特性中的bug要少得多)

从历史上看,OpenMPI没有对
MPI\u线程\u多个
的全面支持,这对于某些应用程序来说是至关重要的。它可能在某些平台上得到支持,但通常不能假定它能正常工作。另一方面,MPICH多年来一直对
MPI\u线程\u多个
提供全面支持,尽管实现它并不总是高性能的(参见一个分析)

另一个在OpenMPI1.x中被破坏的特性是单边通信,也称为RMA。这一特性最近得到了修复,我发现,作为这些特性的大量用户,它们在OpenMPI3.x中通常运行良好(例如,请参阅,以获取显示RMA在两种实现中都能工作的结果,至少在共享内存中是如此。我在Intel Omni Path上看到过类似的积极结果,但没有测试Mellanox InfiniBand

过程管理 开放式MPI过去的一个显著优势是流程管理器。旧的MPICH启动(MPD)很脆弱,很难使用。幸运的是,它已经被弃用多年了(有关详细信息,请参阅)。因此,由于MPD而对MPICH的批评是虚假的

Hydra process manager相当不错,具有与ORTE(开放式MPI)类似的可用性和功能集,例如,两者都支持HWLOC控制流程拓扑。有报告称,对于较大的作业(1000多个流程),开放式MPI流程启动速度比MPICH衍生产品快,但由于我在这里没有第一手的经验,所以我不愿意给出任何结论。此类性能问题通常是特定于网络的,有时甚至是特定于机器的

我发现OpenMPI在使用带有VPN的MacOS时更为健壮,即由于主机名解析问题,MPICH可能会在启动时挂起。由于这是一个bug,这个问题可能会在将来消失

二进制可移植性 而MPICH和OpenMPI都是开源软件,可以在广泛的p语言上编译