【问题标题】:Why does Intel MPI use DAPL and OpenMPI native ibverbs?为什么英特尔 MPI 使用 DAPL 和 OpenMPI 原生 ibverb?
【发布时间】:2017-10-18 22:02:10
【问题描述】:

我不明白为什么英特尔 MPI 使用 DAPL,如果原生 ibverb 比 DAPL 更快,那么 OpenMPI 使用原生 ibverb。 然而,在这个基准测试中,IntelMPI 取得了更好的性能。

http://www.hpcadvisorycouncil.com/pdf/AMBER_Analysis_and_Profiling_Intel_E5_2680.pdf

【问题讨论】:

  • Brayme,为什么 DAPL 比原生 ibverbs 慢?对于什么硬件,这个事实的来源是什么? DAPL 可能仅适用于某些版本的英特尔 MPI 和某些硬件(以及某些 other interfaces may be supported:psm、hfi、libfabric、scif 等)。有更新的基准吗?你的任务是什么?
  • 我在这里读到advancedclustering.com/act_kb/mpi-over-infiniband,它说英特尔 MPI 使用 DAPL 并且比 OpenMPI 慢,但在 AMBER_Analysis 的这个基准测试中,英特尔 MPI 比 OpenMPI 快。我需要了解 MPI 如何在 Infiniband 上工作,尤其是从这两个库中,因为它与 OFED 相关,我的论文就是关于这个,但我无法理解。
  • advancedclustering.com/act_kb/mpi-over-infiniband 的“这里”已经过时了。没有说明日期,但它是关于旧图书馆的,在某些情况下可能是错误的。是的,如果有dapl,英特尔 MPI 将使用它。但是我们需要一些微基准(不是复杂的 AMBER)来比较相同硬件上不同大小的消息的实际延迟与 IntelMPI 和 DAPL;使用 OFA(OFED 动词);与 OFI;和 OpenMPI,它支持不同的选项。如果您需要了解某些内容,请尝试阅读真实的 docs/srcs;做测试,只在这里问具体问题。

标签: openmpi infiniband intel-mpi


【解决方案1】:

英特尔 MPI 使用多个接口与硬件进行交互,并且 DAPL 并非适用于所有情况。 OpenMPI 也会为当前的硬件选择一些接口,它并不总是 ibverbs,有用于本地节点交互的共享内存 API 和用于仅以太网主机的 TCP。

英特尔 MPI (Linux) 列表:

https://software.intel.com/en-us/get-started-with-mpi-for-linux

开始使用适用于 Linux* 操作系统的英特尔® MPI 库。最后更新于 2015 年 8 月 24 日

支持以下互连结构的任意组合:

  • 共享内存
  • 通过标签匹配接口 (TMI) 具有标签匹配功能的网络结构,例如英特尔® True Scale Fabric、Infiniband*、Myrinet* 和其他互连
  • 本机 InfiniBand* 通过 Open Fabrics Alliance* (OFA*) 提供的 OFED* 动词接口
  • OpenFabrics 接口* (OFI*)
  • 通过 DAPL* 支持 RDMA 的网络结构,例如 InfiniBand* 和 Myrinet* 套接字,例如 TCP/IP over Ethernet*、千兆以太网* 和其他互连

可以使用 I_MPI_FABRICS 环境变量选择结构接口: https://software.intel.com/en-us/node/535584

选择面料。最后更新于 2017 年 2 月 22 日

英特尔® MPI 库使您能够在运行时选择通信结构,而无需重新编译您的应用程序。默认情况下,它会根据您的软件和硬件配置自动选择最合适的结构。这意味着在大多数情况下,您不必费心手动选择面料。

但是,在某些情况下,指定特定的通信结构可以提高应用程序的性能。您可以为节点内和节点之间的通信(分别为节点内和节点间通信)指定结构。有以下面料可供选择:

Fabric - 使用的网络硬件和软件

  • shm - 共享内存(仅用于节点内通信)。
  • dapl - 支持直接访问编程库* (DAPL) 的网络结构,例如 InfiniBand* 和 iWarp*(通过 DAPL)。
  • tcp - 支持 TCP/IP 的网络结构,例如以太网和 InfiniBand*(通过 IPoIB*)。
  • tmi - 支持标签匹配接口 (TMI) 的网络结构,例如英特尔® True Scale Fabric、英特尔® Omni-Path Architecture 和 Myrinet*(通过 TMI)。
  • ofa - 支持 OpenFabrics Alliance* (OFA) 的网络结构,例如 InfiniBand*(通过 OFED* 动词)。
  • ofi - 支持 OpenFabrics 接口* (OFI) 的网络结构,例如英特尔® True Scale Fabric、英特尔® Omni-Path 架构、InfiniBand* 和以太网(通过 OFI API)。

对于节点间通信,它使用默认结构列表中的第一个可用结构。该列表是为每个硬件和软件配置自动定义的(有关详细信息,请参阅 I_MPI_FABRICS_LIST)。

对于大多数配置,此列表如下:

dapl,ofa,tcp,tmi,ofi

【讨论】:

  • 我不明白你所说的“接口”是什么意思。我是新来的。
  • 可能原因是历史性的,请查看 software.intel.com/en-us/forums/…Gergana S. 2012 年的帖子:“当然,我们正在投入时间和精力通过 ofa 结构直接支持 OFED 动词因为我们觉得这是值得的;它使我们能够直接针对 OFED 软件堆栈进行优化,并通过多轨支持获得一些不错的边缘带宽优势。..如果您没有安装 OFED,您的其他选择..是dapl。...我们可以推荐的一件事是:如果您确实安装了OFED,请通过ofa利用它。
  • 我的意思是软件接口到硬件(API)作为“接口”。 DAPL 和动词(OFED、ofa)和 ofi(libfabric)只是某些硬件的不同 API。
  • 他们的 Omni-Path Fabric 有不同的默认列表:software.intel.com/en-us/node/528821 "ofi,tmi,dapl,ofa,tcp - 这是具有英特尔® Omni-Path Fabric 或英特尔® True 的节点的默认值Scale Fabric 可用,但没有任何其他类型的互连卡。"
  • 不好意思吹毛求疵,其实是Open MPI加一个空格。此外,在 InfiniBand 网络上,英特尔 MPI 确实默认使用 DAPL,这让我很恼火,因为我们过去在旧的 Linux 集群上遇到了很多 DAPL 问题。
猜你喜欢
  • 2019-07-08
  • 2011-10-04
  • 2017-01-22
  • 2011-12-20
  • 1970-01-01
  • 2021-11-12
  • 1970-01-01
  • 2012-08-08
  • 2020-07-31
相关资源
最近更新 更多