OPENMPI
发布人:张子卓  发布时间:2019-12-12   浏览次数:693

官方网站连接:https://www.open-mpi.org/


OpenMPI是一种高性能消息传递库,最初是作为融合的技术和资源从其他几个项目(FT- MPI, LA-MPI, LAM/MPI, 以及 PACX-MPI),它是MPI-2标准的一个开源实现,由一些科研机构和企业一起开发和维护。因此,OpenMPI能够从高性能社区中获得专业技术、工业技术和资源支持,来创建最好的MPI库。OpenMPI提供给系统和软件供应商、程序开发者和研究人员很多便利。易于使用,并运行本身在各种各样的操作系统,网络互连,以及一批/调度系统

Open MPI并不是LAM/MPI, LA-MPIFT-MPI的简单组合,而是一种全新的MPI实现,其完全实现了MPI-1.2MPI-2规约,并且完全支持并发和多线程应用(也就是MPI_THREAD_MULTIPLE)。为了有效有效支持大范围的并行机,开发了高性能驱动程序,其中包括TCP/IP, shared memory, Myrinet, Quadrics, and Infiniband,更多的机器支持可能会基于用户、市场和研究需要而增加。对于网络传输错误,Open MPI提供了一种可选的特性来检测数据的完整性。通过使用报文分段和拆分到多个网络设计,Open MPI不仅可以达到可用带宽的最大值,而且当节点使用多台网络设备的时候,可以动态处理网络设备的数据丢失。

Open MPI的设计以MPI构件架构(MPI Component Architecture, MCA)为中心。虽然构件编程已被工业界广泛应用,但在HPC领域中应用却没有很长时间。Open MPI由三个主要的功能域组成,如图1所示。

 

 

 

1 Open MPI体系结构

  • MPI构件架构(MPI Component Architecture, MCA),是Open MPI的核心,为所有其它层次提供管理服务的基础组件结构;

  • 构件框架(Component frameworks),存在于每个主要的功能域中,以管理模块;

  • 模块(Modules),是自包含的软件单元,带有已定义好的接口,可以在运行时和其它模块进行配置组合。

MCA管理构件框架并为它们提供服务,如接收高层抽象的运行时参数,并通过构件框架向下传递到模块。MCA也能寻找构造时的构件,并调用相关的hooks以配置、构造和安装这些构件。

  每个构件框架致力于单独的任务,例如提供并行任务控制或执行MPI集合操作。一旦需要,构件框架会发现、加载、使用、卸载模块。每个构件框架有不同的机制和使用场景,有些在一个时刻只用一个模块,而有些会同时用到所有模块。
  模块是自我包含的软件单位,可以自我配置、自我构造和自我安装。模块包含在构件框架中,以接口的形式为高层抽象或MPI的其它部分提供需要的服务。

  下面是Open MPI构件框架的部分列表(包含MPI功能,不包含运行时环境构件):

  • 点到点传递层(Point-to-point Transport Layer, PTL):一个PTL模块相当于一个专用的网络协议和设备,主要负责MPI进程间字节传递的“有线协议”。PTL模块需要识别MPI的语义,多个PTL模块可以在一个进程中使用,同时允许多个网络的使用。PTL模块支持TCP/IP, shared memory, Quadrics elan4, InfinibandMyrinet

  • 点到点管理层(Point-to-point Management Layer, PML)PML的主要功能是为MPI层和所有可用的PTL模块之间提供报文分段、调度和重新装配服务。

  • 聚合通信(Collective Communication, COLL):是MPI聚合操作的后端,支持组内通信域和组间通信域间功能。

  • 进程拓扑(Process Topology, TOPO):提供组内通信夫域的笛卡尔和图的映射功能。基于集群和风格的计算可能受益于此拓扑意识的通信域,允许MPI基于位置来优化通信域。

  • 约简操作(Reduction Operations)MPI固有的约简操作的后端功能(例如MPI_SUM)。模块可以利用平台专用的指令集来优化在目标平台上的性能。

  • 并行IO(Parallel I/O)IO模块实现并行文件和设备的存取。

Open MPI框架类型的多样性使得第三方开发者可以使用Open MPI作为一个研究平台、一个商业产品的开发工具、甚至是不同算法和技术的比较机制。
Open MPI的构件架构为终端用户和库开发者提供了许多优势:1)它允许一个MPI进程内使用多个构件。例如,一个进程可以同时使用多个网络设备驱动;2)为第三方软件的使用提供了方便,支持源码和二进制版本;3)提供了细粒度的、运行时、用户可控的构件选择机制。



 
copyright@2022长安大学 | 高性能计算平台