我不明白为什么英特尔 MPI 使用 DAPL,如果原生 ibverbs 比 DAPL 快,那么 OpenMPI 使用原生 ibverbs。然而,在这个基准测试中,IntelMPI 实现了更好的性能。
http://www.hpcadvisorycouncil.com/pdf/AMBER_Analysis_and_Profiling_Intel_E5_2680.pdf
我不明白为什么英特尔 MPI 使用 DAPL,如果原生 ibverbs 比 DAPL 快,那么 OpenMPI 使用原生 ibverbs。然而,在这个基准测试中,IntelMPI 实现了更好的性能。
http://www.hpcadvisorycouncil.com/pdf/AMBER_Analysis_and_Profiling_Intel_E5_2680.pdf
英特尔 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* 和其他互连
- 通过 Open Fabrics Alliance* (OFA*) 提供的 OFED* 动词的本机 InfiniBand* 接口
- 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 架构和 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