gpt4 book ai didi

mpi - OpenMP 和 MPI 混合程序比纯 MPI 更快吗?

转载 作者:行者123 更新时间:2023-12-04 20:08:10 32 4
gpt4 key购买 nike

我正在开发一些程序,而不是在每个节点上有 4 个内核的 4 节点集群上运行。我有一个非常快的 OpenMP 版本的程序,它只在一个集群上运行,我正在尝试使用 MPI 扩展它。由于我的经验有限,我想知道哪个会给我更快的性能,OpenMP 混合架构还是仅 MPI 架构?我见过this slide声称混合动力通常无法胜过纯粹的 MPI 动力,但它没有提供支持证据,对我来说有点违反直觉。

顺便说一句,我的平台使用 infiniband 来互连节点。

非常感谢,
鲍勃

最佳答案

共享内存通常比消息传递更有效,因为后者通常需要增加数据移动(将数据从源移动到其目的地),这在性能和能源方面都是昂贵的。预计这一成本将随着每一代人而不断增长。

该 Material 指出,仅 MPI 的应用程序通常与混合应用程序相当或更好,尽管它们通常具有更大的内存要求。

然而,它们基于这样一个事实,即所显示的大多数大型混合应用程序都基于并行计算,然后是串行通信。

这种实现通常容易受到以下问题的影响:

  • 非统一内存访问 :在单个节点中有两个套接字是 HPC 中的流行设置。由于现代处理器在芯片上具有内存 Controller ,因此可以从本地内存 Controller 轻松访问一半内存,而另一半则必须通过远程内存 Controller (即位于另一个插槽中的内存 Controller )。因此,程序如何分配内存非常重要:如果在序列化阶段(在最接近的可能内存上)保留内存,那么一半的内核将遭受更长的主内存访问。
  • 负载均衡 :每个*与序列化通信的并行计算**阶段都意味着一个同步障碍。这个障碍迫使最快的内核等待并行区域中最慢的内核。最快/最慢不平衡可能受操作系统抢占(时间与其他系统进程共享)、动态频率缩放等影响。

  • 其中一些问题比其他问题更容易解决。例如,
    通过将不同的 MPI 进程放置在同一节点内的不同套接字中,可以缓解多套接字 NUMA 问题。

    要真正发挥共享内存并行的效率,最好的选择是尝试将通信与计算重叠并确保所有进程之间的负载平衡,从而降低同步成本。

    然而,开发既负载平衡又不施加大同步障碍的混合应用程序非常困难,现在有大量的研究工作来解决这种复杂性。

    关于mpi - OpenMP 和 MPI 混合程序比纯 MPI 更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19777516/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com