一种消息传递接口支持总线通信框架的制作方法

文档序号:6603437阅读:284来源:国知局
专利名称:一种消息传递接口支持总线通信框架的制作方法
技术领域
本发明基于Open MPI开源软件,将Hypertranpsort总线的通信协议整合到Open MPI架构中,Open MPI能够支持Hypertransport通信协议。它涉及到并行计算消息传递和 通信协议,属于计算机技术领域。
背景技术
MPI是message passing interface的缩写,是一个由专家、工业界和学术界组成 的大型委员会定义的一套标准,近年来被广泛应用于并行计算和高性能计算领域。目前,主 流的MPI发布版本包括MPICH2,MVAPICH2,Open MPI等等。
其中,Open MPI对异构环境下的作业管理、异构处理器、异构网络协议等方面提供 了较为全面的技术支持,是目前对异构计算环境支持较好的MPI实现系统。目前,Open MPI 支持的通信网络主要包括千兆以太网,infiniband高速互联网络,Myrinet高速互联网络, 同时,Open MPI还支持共享内存通信。Open MPI的架构如图1所示,图中的名词解释(I)BTL (Byte Transport Layer)由BTL框架处理点点数据传输,该层只是简单地移动字节序列,不考虑上层点对 点通信协议,能够方便地支持各种网络设备;其中,SM BTL提供Open MPI对于共享内存通信的支持;TCP BTL提供Open MPI对 于TCP/IP协议的支持;Open IB提供Open MPI对于Infiniband协议的支持。除此之外, Open MPI还通过SELF BTL提供对于共享内存的支持。SELF BTL与SM BTL的区别在于SELF BTL直接将目的消息的地址指向源消息,实现消息传递,而SM BTL则通过插入删除一个先 入先出队列完成消息传递。(2)BML(BTL Management Layer)由BML框架负责发现并管理BTL层资源;目前,BML只提供了一种组件r2,在实例 化BML时,只能使用r2。(3)PML(Point-to-Point Messaging Layer)由PML框架为MPI层提供点对点通信接口,该层实现了所有MPI点对点通信语义, 功能包括从MPI层获取消息,将消息分段,把消息调度到BTL模块上,管理请求的进展,在接 收端负责组装消息等;PML目前提供两种组件0B1和DR。OBl组件作为默认选择组件。DR 组件提供完全可靠的消息传递,并执行数据可靠性检查操作,因此速度较慢。(4) MPI为用户提供API接口 ;(5) Mpool内存池,提供内存管理函数;可以被其他component使用。BTL根据需要注册和预 先分配fragment。PML无论用户buffer是否注册,都允许PML协议运行。MPI对MPI_Alloc_ mem函数提供简单的解决办法;
(6) Rcache注册缓存。提供缓存注册函数,可以被内存工具用来进行RDMA连接。集群系统由于具有投资小,研制周期短,性能价格比高,可扩展性高,使用方便等 特点,随着可移植异构编程环境PVM和标准的消息传递平台MPI等并行编程环境的日益普 及,集群已经发展成为高性能计算机领域的主流技术。目前,随着处理器计算能力的不断提 高,集群系统的通信逐渐成为系统整体性能的瓶颈,最主要的问题是通信带宽低、延时大、 通信网络的可扩展性差等等。现在主要有两种解决的办法,一种是为集群系统设计专用网 络,另一种是在单机单板内采用大规模处理器系统,提高单主板内的CPU密度,通过总线技 术实现处理器和系统间的通信,以提高通信性能。
HyperTransport技术是一种高速、低延时、点对点的连接,旨在提高PC机、服务 器、嵌入式系统,以及网络和电信设备的集成电路之间的通信速度。HyperTransport有助于 减少系统之中的布线数量,从而能够减少系统瓶颈,让当前速度更快的微处理器能够更加 有效地在高端多处理器系统中使用系统内存。综上所述,当在单板中采用大规模处理器系统时,同时在一个主板内安装几个甚 至多个操作系统,如图2所示,图中为单一主板上有两个操作系统,每个操作系统中可以使 用单CPU也可以是SMP,则操作系统内的MPI进程通信可以通过共享内存完成,而主板内 的多个操作系统之间则需要使用Hypertransport总线或者外部的以太网,Infiniband高 速互联网络进行通信。显然,在板内使用总线通信,延时要远远小于其他的外部网络设备。 MPI对支持Hypertransport总线通信的需求随之产生。本发明主要研究Open MPI支持 Hypertransport总线通信的方法。

发明内容
本发明提供一种使Open MPI开源软件支持Hypertransport总线通信框架。使 得计算机中的MPI进程可以通过Hypertransport总线进行通信。优点在于使用板内的 Hypertransport总线进行通信时,通信效率高于使用千兆以太网或者是InfiniBand高速 互联网络,Myrinet网络实现的系统间互联。一种消息传递接口(Message Passing Interface,MPI)支持总线通信框架, 包括Open MPI开源软件的基本框架中的字节传输层(Byte Transport Layer,BTL)、 BML (BTL ManagementLayer,字节传输管理层)、点对点消息层(Point-to-Point Messaging Layer, PML) > MPI ISffifMji^Π (MPI Application Program Interface, MPI API)
池(Mpool)、及注册缓存(Rcache),其特征在于该框架还包括在上述框架的基础上,添加 Hypertransport (HT)的总线通信模块HT BTL (HT Byte Transfer Layer),并调用 Open MPI 架构中相应的内存池Mpool ;通过配置HT BTL模块优先级,使得一个主板的相同或不同操 作系统内,及不同主板间能够进行通信。所述HT BTL模块包括核心功能模块,消息类型模块,对等端模块,配置文件模块; 其中所述核心功能模块,其功能包括描述HT BTL基本信息,初始化HT BTL模块,HT BTL组件打开和资源释放,建立和释放对等端,分配和释放消息描述符,消息的发送和接 收;
所述消息类型模块,其功能包括定义MPI的消息类型,以及实现对MPI各种消息 的构造,定义的消息供核心功能模块调用;所述对等端模块,其功能包括描述进程间通信建立连接时,对等端连接的基本描 述信息,对等端连接的建立和释放在核心功能模块当中完成;所述配置文件模块,其功能包括完成HT BTL下相关文件的路径配置,以及HT BTL模块编译方式的选择;所述消息类型模块中定义两种消息类型供核心功能模块调用;对等端模块当中定 义对BTL对等端的描述信息,核心功能模块在建立对等端连接时调用这一模块;核心功能 模块完成BTL的初始化,数据收发等功能;配置文件模块将HT BTL的其他三个模块整合到 Open MPI的框架当中。所述的HT BTL模块的初始化过程为(I)MPI API调用MPI初始化函数; (2) PML层选中组件OBl并调用BML的初始化函数;(3) BML层通过r2组件初始化所有的BTL ;(4)调用HT BTL的组件初始化函数,并将其加入可用的BTL模块链表。所述的HT BTL模块的对等端连接过程为(1) PML层为每个MPI进行关联一个BTL组件;(2) BML层添加可用的BTL组件链表,并根据优先级对网络组件进行排序;(3)为同一主板不同操作系统上的MPI进程提供HT BTL组件信息,并调用建立对 等端的函数建立HT连接。所述的HT BTL模块的消息发送与接收过程为(1)调用MPI的消息发送函数;(2)PML层分配发送请求,根据消息大小选择不同的传输函数,调用BML层发送函 数;(3) BML层的发送函数绑定HT BTL对等端,调用BTL发送函数;(4)HT BTL发送函数为发送消息分配描述符,调用HT系统调用发送函数,将消息 发送到对方主机的内存中;(5)发送方完成数据发送后,接收方依次调用MPI,PML,BML,HT BTL层的接收函数 完成数据接收,并在完成接收以后调用相应的资源释放函数,释放之前分配的系统资源。在主板内的各个操作系统之间,MPI进程之间的通过HT总线通信,而主板间的MPI 进程之间通信通过千兆以太网或者infiniband高速互联网络通信。Open MPI定义了 BTL模块的三类调用优先级,HT BTL模块的优先级设置为high。本发明一种消息传递接口支持总线通信框架,其优点及功效在于在高性能计算 领域,随着多核处理器的不断发展,系统结构发生了很大的变化。在单主板上的中央处理器 (CPU)的密度不断提高,也使得在同一块主板上安装多个操作系统成为可能。同一主板上的 操作系统之间通过总线进行通信。MPI是一种消息传递编程模型,目前广泛应用于并行计算 领域。针对这种单主板多操作系统的系统结构,目前主流的MPI实现版本都是基于网络协 议的,缺乏对于总线协议的支持。因此,消息传递接口对于总线协议支持的需求应运而生。运用本发明的成果,就可以实现消息传递接口对于总线通信框架的支持。同时,在同一操作系统内部,MPI进程仍然使用共享内存通信;在同一主板的不同操作系统之间, MPI进程之间通过总线协议进行通信;在不同主板之间,MPI进程仍然使用网络协议进行通 信。本发明能够充分利用现有技术,满足这种特殊主板的应用需求,具有广阔的应用前景, 可望产生显著的经济效益。


图IOpen MPI架构示意2单主板多操作系统互连示意3添加HT模块后的Open MPI架构示意4MPI进程通信路由选择示意5HT BTL的结构示意6HT BTL各功能模块关系示意7配置文件模块的作用示意8HT BTL模块初始化示意9HT BTL对等端连接示意10利用HT BTL实现消息发送示意IlHT BTL与HT通信协议的调用关系示意12核心功能模块调用关系示意13各个BTL模块优先级设置示意图
具体实施例方式本发明主要是针对同一主板内不同操作系统之间的MPI进程调用 hypertranpsort总线通信协议进行通信,核心功能为数据的收发。下面为主要的数据结构 和数据收发函数的实现方式,以及最终的配置方式,还有网络优先级设定的实施方案。本发明专利基于Open MPI开源软件的架构,如图3所示,根据Open MPI模块化的 特点,在其原架构基础上其中添加Hypertransport的总线通信模块HT BTL以及调用原架 构中相应的内存池Mpool,使得Open MPI能够支持Hypertransport总线通信,以达到提高 通信效率的目的。同时,通过配置HT BTL模块优先级,使得一个主板内同操作系统内,MPI 进程间使用SM BTL或者SELF BTL通信;不同操作系统内,MPI进程之间通过调用HT BTL 模块进行通信;不同主板间,通过调用已有的网络模块通信。如图4所示,同一操作系统内的进程(如Pl,P2)利用共享内存进行通信;同一主 板不同操作系统中的进程(如Pl,P3)利用hypertransport总线协议进行通信;不同操作 系统上的进程(如Pl,P5)利用外部互联网络(图中为以太网和Infiniband高速互联网 络)进行通信。( 一 ) Hypertransport 通信模块结构基于板内的系统之间可以共享 物理内存的机制,Hypertransport总线的互联结 构可以提供一种共享buffer的通信方式,即对每一个系统都分配出一块物理空间,为各个 系统共享,这样系统间的通信就可以通过直接读、写远程主机的共享buffer来实现系统间 的通信。在此基础上,建立地址映射表,可以将一个主板上的其他系统的内存映射到本地,本地应用程序通过调用映射地址,实现与相同主板上的操作系统之间使用hypertransport 进行通信的功能。通过实现一层薄的hypertansport总线通信协议,提供收发数据的系统调用接 口,直接供Open MPI中的HT BTL模块调用,实现Open MPI开源架构与Hypertransport 通信的对接。目前已经有很多关于hypertransport总线协议的研究,本专利不讨论关于 hypertransport总线通信协议的方法。本专利使用的hypertranport总线通信协议提供的两个收发消息系统调用接口 有以下几个参数(1)传递消息的首地址
(2)变量数据类型(3)变量的数量(4)主板内操作系统的编号(发送接口这里为消息目的系统编号,接收端为消息 源的系统编号)(5)表示消息的标识tag通过这两个系统调用即可实现调用hypertransport总线进行数据收发。(二)HT BTL 模块设计本发明所述方法实现Open MPI开源框架对HT通信协议的支持。因为 Hypertransport可以将远端操作系统的地址映射到本地,通过调用映射地址即可实现读写 对方的内存。因此,可以参考SM BTL模块实现内存池和注册缓存管理,以及与BML层的接 口配置。这部分可以查阅相关文档和Open MPI源码。1、HT BTL模块的主要功能BTL 是指 Byte Transfer Layer,即字节传输层。Open MPI framework对于各种网络协议的支持,都是通过BTL模块进行封装的。 主要实现的功能(1)提供所调用底层互联网络通信协议的抽象,例如infiniband高速互联网络, Myrinet, Portals, Ethernet ;对于共享内存il/f言禾口进禾呈内的回环(process loopback)通 信也是通过BTL模块进行封装的;(2)对活动消息提供基于接口的标签支持;(3)为RDMA操作提供内存注册支持;(4)支持RDMA读写操作;(5)提供消息传递完成的返回函数。本发明主要提供前面1,2,5三种功能的支持,暂不提供专门的RDMA操作接口。2、HTBTL各功能模块如图5所示,整个HT BTL中有四个模块核心功能模块,消息类型模块,对等端模 块,配置文件模块。SM BTL当中一共有五个功能模块,除了这四个模块以外,还有一个先入 先出队列模块。SM BTL通过先入先出队列的插入和删除操作完成数据收发,而本发明通过 hypertransport总线通信协议提供的系统调用完成数据收发,因此删除这一模块。进而修 改其他模块中队列的相关函数。如图6所示,为三个功能模块的调用关系示意图,其中消息类型模块中定义两种消息类型供核心功能模块调用;对等端模块当中定义对BTL对等端的描述信息,核心功能 模块在建立对等端连接时调用这一模块;核心功能模块完成BTL的初始化,数据收发等功 能。配置文件模块的作用如图7所示,将HT BTL的其他三个模块整合到Open MPI的 Framework 当中。HT BTL模块的四个模块功能如下(1)消息类型模块这个模块主要定义MPI的消息类型,以及实现对MPI各种消息的构造。此模块中 定义的消息供核心功能模块调用。主要包括两个文件,一个头文件当中定义各种HT BTL的消息类型和函数接口,另 一 个实现文件中实现各种消息操作函数。消息类型定义两种消息,小消息和大消息,两种消息的大小在核心功能模块的基 本消息结构体当中设定。定义三种消息创建方法1)通用消息创建当中实现消息基本信息的构造,包括消息大小,消息地址,消息所属进程。2)小消息创建设定消息类型为小消息。3)大消息创建设定消息类型为大消息。构造小消息需要调用小消息和通用消息创建方法。构造大消息时需要调用大消息 和通用消息创建方法。其他网络模块的BTL还需要定义RDMA消息类型,因为本发明不实现RDMA的功能, 因此不需要实现RDMA消息的创建。(2)对等端模块这个模块当中主要定义了一个结构体,用来描述进程间通信建立连接时,对等端 连接的基本描述信息。对等端连接的建立和释放在核心功能模块当中完成。对等端的基本信息同一主板内操作系统的标识信息,发送端的MPI进程号,接收 端的MPI进程号。(3)核心功能模块在这个模块中,主要定义BTL通用的数据结构和接口函数,以及根据 hypertransport通信协议的特点进行的重载。主要完成以下几个功能描述HT BTL基本 信息,HT BTL组件打开和资源释放,建立和释放对等端,分配和释放消息描述符,消息的发 送和接收。1)描述HT BTL的基本信息定义一个HT BTL组件信息描述结构体,这个结构体当中定义了 HT BTL模块当中 用到的所有重要的变量信息。2) HT BTL 的初始化在系统中启动Open MPI时,会对所有的可用的BTL进行初始化。因此,在这个过程中,需要完成HT BTL的初始化。这一过程在整个Open MPI的启动过程中的调用关系如 图8所示。HT BTL本身的初始化需要对HT BTL基本信息进行赋值。此外,还需完成以下功能创建并初始化内存池,分配HT BTL内存空间,并得到首 地址指针。初始化内存池操作使用Open MPI提供的通用接口,与其他BTL类似。初始化内 存池的操作不属于本发明研究内容。3) HT BTL组件打开,和资源释放当调用HT BTL进行通信时,需要实例化一个HT BTL组件并通过组件打开注册其 相关参数。HT BTL资源释放与组件打开对应,调用HT BTL组件结束后,释放所有的资源。 在后面介绍的建立HT BTL对等端时,首先需要实例化HT BTL组件,并将HT BTL组件打开, 注册相关参数。释放对等端时,释放HT BTL占用的资源,并销毁实例化的BTL组件。
4)建立和释放对等端这一功能需要调用对等端模块完成。在调用Hypertransport协议进行通信时,首先建立对等端连接,对等端连接建立 完成以后,进行数据收发,消息发送完成以后,释放对等端资源。在此过程中需要将MPI进 程与HT BTL的对等端进行关联,具体过程如下如图9所示,通过在PML层加入特定的数据形成具有PML信息的进程结构,通过对 应的组件,在将BML层对应的组件信息添加进来,最后将BTL层对应网络组件的信息添加进 来,当进程位于同一主板的不同操作系统上时,调用HT BTL核心功能模块中的建立对等端 函数,建立连接。建立对等端与消息发送的关系后面会做介绍。建立和释放对等端时,相应的需要实例化和销毁HT BTL组件,这一点前面已经介 绍过,不再赘述。5)分配和释放消息描述符在HT BTL的消息发送和接收时需要分配和释放消息描述符,描述需要发送的MPI 消息。消息描述符的定义为Open MPI中通用的消息描述符。6)消息发送和消息接收需要分别介绍HT BTL消息发送在整个Open MPI中与其他层次发送函数的关系, 以及HT BTL消息发送本身的实现机制。①HT BTL的消息发送在整个Open MPI中与其他层发送函数的关系MPI的消息发送,需要层层调用MPI,PML, BML, HT BTL层的发送函数,完成数据发 送。如图10所示,为调用MPI_Send点对点通信时的消息发送流程,可以看出,HT BTL中的 消息发送在整个MPI消息发送中的调用关系。消息发送的详细流程如下a)MPI层确认所有参数有效,然后调用PML层的发送函数;b)从PML空余队列中分配一个发送请求,初始化发送请求,确定消息类型,调用 BML发送函数;c)发送开始时,一个BML的对等端调用相应的数据结构链表,这个链表绑定了 HT BTL对等端;
d)HT BTL分配消息描述符,调用系统将数据写入对方内存中。发送方完成数据发送以后,接收方依次调用MPI,PML, BML, HT BTL层的接收函数 完成数据接收,并在完成接收以后调用相应的资源释放函数,释放之前分配的系统资源。②HT BTL中消息发送的实现 调用hypertransport总线通信协议提供的数据发送的系统调用接口,将数据发
送出去ο因为这两个系统调用当中所使用的tag与MPI消息的tag概念是不同的,二者之 间也没有映射关系。因此,在发送进程消息发送完成后,接收进程在另一个操作系统当中并 不知道相应的系统调用中的tag编号。本发明中采用散列的办法将MPI的进程中的tag映 射为HT系统调用的tag,这样发送端和接收端可以通过映射关系使用相同的MPI tag,实现 传递消息的功能。如图11所示,表示HT BTL与HT通信协议以及相关映射表之间的调用关系。同理,HT BTL消息接收通过调用hypertransport提供的系统调用接口,通过类似 的方式完成数据接收。7)核心功能模块中,各个小的功能模块之间的关系如图12所示,HT BTL初始化所有需要用到的基本信息。初始化完成以后,HT BTL 其他的功能才可以使用,即Hypertransport支持MPI通信。(4)配置文件模块在Open MPI中,每一个BTL模块对应的目录下都有三个重要的配置文件 configure, params,Makefile, in, Makefile, am。因此,HT BTL 也需要定义这三个文件将 HTBTL加载到Open MPI的Framework当中。主要功能是完成HT BTL下相关文件的路径配 置,以及HT BTL模块编译方式的选择,即是采用静态库还是动态库。(三)进程间通信网络选择方法配置本发明需要实现在主板内的各个操作系统之间,MPI进程之间的通过 Hypertransport总线通信,而主板间的MPI进程之间通信通过千兆以太网或者infiniband 高速互联网络通信。OpenMPI定义了 BTL模块的三类调用优先级。其中本地通信(目前为SELF和SM 两种)为最高级high,tcp优先级为最低级low,其他的IB和GM为中间级default。由于 本发明中,是利用远端Hypertransport总线映射到本地的地址通信,类似于共享内存的进 程通信,因此这里把HT BTL模块的优先级设置为high。这样优先级为high的BTL模块一 共有三个SELF BTL, SM BTL,HT BTL0在这三个BTL模块中,再设置二级优先级,来区分它 们之间的调用优先级关系SELF BTL大于SM BTL, SM BTL大于HT BTL0如果想让主板间的进程同时调用Open IB BTL和TCP BTL进行通信,只需把tcp 的优先级也改为default即可。配置之后,各个模块的优先级如图13所示,从上到下优先级依次降低。(四)主要数据结构实现1. HT BTL基本消息结构体这个结构体当中定义了 HT BTL模块当中用到的所有重要的变量信息。包括继承 BTL基类的component实例化;消息链表的初始化长度;空闲链表的最大值;增加消息链表长度时,每次增加的单位值;内存池的名称;共享内存池的指针;远端内存映射到本地的地 址;HT的消息队列;等待资源的消息队列;同一主板内本操作系统的标识信息;HT BTL小消 息大小;HT BTL大消息大小。具体定义如下struct mca_btl_ht_component_t{mca_btl_base_component_2_0_0_t super ;int ht_free_list_num ;int ht_free_li st_max ;int ht_free_list_inc ; char*ht_mpool_name ;mca_mpool_base_module_t*ht_mpools ;void*ht_mpool_remote_base ;ompi_free_list_t ht_frags_eager ;ompi_free_list_t ht_frags_max ;size_t eager_limit ;size_t max_frag_size ;int system_ID ;}2.对等端对等端连接结构体中主要定义的变量信息,同一主板内操作系统的标识信息,发 送端的MPI进程号,接收端的MPI进程号。struct mca_btl_base_endpoint_t{int my_mpi_rank ;int peer_SMp_rank ;int system_ID ;};(五)数据收发函数实现1.消息发送函数首先调用散列函数,利用MPI消息的标签tag生成为hypertranport系统 调用发送函数中的参数tag,接着初始化系统调用发送函数的各个参数,最后调用 hypertransport系统调用发送函数完成数据发送。2.消息接收函数同理,接收函数通过同样的方式调用hypertransport系统调用接收函数完成数 据接收。本发明中使用的两个系统调用函数具体接口形式为aSMlinkage u32HT_Send(void*buf,u32count,HT—Datatype datatype,u32 dest, u32 tag);aSMlinkage u32HT_Recv(void*buf, u32count, HT_Datatype datatype, u32 source,u32 tag);(六)优先级设置
在HT BTL组件的打开函数中,将优先级设置比SM BTL小1,具体形式mca_btl_ht. super. btl_exclusivity = MCA_BTL_EXCLUSIVITY_HIGH_2SELF BTL 和SM BTL的优先级不变,即mca_btl_Self. btl_exclusivity = MCA_BTL_EXCLUSIVITY_HIGHmca_btl_Sm. super. btl_exclusivity = MCA_BTL_EXCLUSIVITY_HIGH-1 ;IB BTL 和TCP BTL的默认仍然为mca_btl_openib_module. super. btl_exclusivity = MCA_BTL_EXCLUSIVITY_ DEFAULT ;mca_btl_tcp_module. super. btl_exclusivity = MCA_BTL_EXCLUSIVITY_ LOW+100 ;
(七)配置文件的设定配置文件的作用是把HT BTL模块整合到Open MPI的Framework当中。其中 Makefile, in 文^f牛由 automake 自动生成。configure, params 与所有 BTL 白勺 configure, params相同,Makefile, am文件的的重要配置如下1.路径配置libmca_btl_ht_la_sources = \btl_ht. c\btl_ht. h\btl_ht_component. c\btl_ht_endpoint. c\btl_ht_endpoint. h\btl_ht_frag. c\btl_ht_frag. h\2.对HT模块编译方式的选择,是采用静态库还是动态库。if 0MPI_BUILD_btl_ht_DS0component_noinst =component_instal1 = mca_btl_ht. Iaelsecomponent_noinst = libmca_btl_ht. Iacomponent_instal1 =endif
权利要求
一种消息传递接口支持总线通信框架,包括Open MPI开源软件的基本框架中的字节传输层BTL、字节传输管理层BML、点对点消息层PML、MPI应用程序接口MPI API、内存池Mpool、及注册缓存Rcache,其特征在于该框架还包括在上述框架的基础上,添加HT的总线通信模块HT BTL,并调用Open MPI架构中相应的内存池Mpool;通过配置HT BTL模块优先级,使得一个主板的相同或不同操作系统内,及不同主板间能够进行通信。
2.根据权利要求1所述的消息传递接口支持总线通信协议,其特征在于所述HTBTL 模块包括核心功能模块,消息类型模块,对等端模块,配置文件模块;其中所述核心功能模块,其功能包括描述HT BTL基本信息,初始化HT BTL模块,HT BTL 组件打开和资源释放,建立和释放对等端,分配和释放消息描述符,消息的发送和接收;所述消息类型模块,其功能包括定义MPI的消息类型,以及实现对MPI各种消息的构 造,定义的消息供核心功能模块调用;所述对等端模块,其功能包括描述进程间通信建立连接时,对等端连接的基本描述信 息,对等端连接的建立和释放在核心功能模块当中完成;所述配置文件模块,其功能包括完成HT BTL下相关文件的路径配置,以及HT BTL模 块编译方式的选择;所述消息类型模块中定义两种消息类型供核心功能模块调用;对等端模块当中定义对 BTL对等端的描述信息,核心功能模块在建立对等端连接时调用这一模块;核心功能模块 完成BTL的初始化,数据收发等功能;配置文件模块将HT BTL的其他三个模块整合到Open MPI的框架当中。
3.根据权利要求2所述的消息传递接口支持总线通信协议,其特征在于所述的HTBTL 模块的初始化过程为(1)MPIAPI调用MPI初始化函数;(2)PML层选中组件0B1并调用BML的初始化函数;(3)BML层通过r2组件初始化所有的BTL;(4)调用HTBTL的组件初始化函数,并将其加入可用的BTL模块链表。
4.根据权利要求2所述的消息传递接口支持总线通信协议,其特征在于所述的HTBTL 模块的对等端连接过程为(1)PML层为每个MPI进行关联一个BTL组件;(2)BML层添加可用的BTL组件链表,并根据优先级对网络组件进行排序;(3)为同一主板不同操作系统上的MPI进程提供HTBTL组件信息,并调用建立对等端 的函数建立HT连接。
5.根据权利要求2所述的消息传递接口支持总线通信协议,其特征在于所述的HTBTL 模块的消息发送与接收过程为(1)调用MPI的消息发送函数;(2)PML层分配发送请求,根据消息大小选择不同的传输函数,调用BML层发送函数;(3)BML层的发送函数绑定HTBTL对等端,调用BTL发送函数;(4)HTBTL发送函数为发送消息分配描述符,调用HT系统调用发送函数,将消息发送 到对方主机的内存中;(5)发送方完成数据发送后,接收方依次调用MPI,PML,BML,HTBTL层的接收函数完成数据接收,并在完成接收以后调用相应的资源释放函数,释放之前分配的系统资源。
6.根据权利要求1所述的消息传递接口支持总线通信协议,其特征在于在主板内的 各个操作系统之间,MPI进程之间的通过HT总线通信,而主板间的MPI进程之间通信通过 千兆以太网或者infiniband高速互联网络通信。
7.根据权利要求1所述的消息传递接口支持总线通信协议,其特征在于0penMPI定 义了 BTL模块的三类调用优先级,HT BTL模块的优先级设置为high。
全文摘要
本发明一种消息传递接口支持总线通信框架,包括Open MPI开源软件的基本框架中的字节传输层BTL、字节传输管理层BML、点对点消息层PML、MPI应用程序接口MPI API、内存池Mpool、及注册缓存Rcache,该框架还包括在上述框架的基础上,添加HT的总线通信模块HT BTL,并调用Open MPI架构中相应的内存池Mpool;通过配置HT BTL模块优先级,使得一个主板的相同或不同操作系统内,及不同主板间能够进行通信。它主要根据Open MPI开源软件提供的标准接口,结合Hypertransport总线通信协议提供的系统调用接口,将Hypertransport总线的通信协议整合到Open MPI架构中。同时,在MPI进程通信的过程中,使用Hypertransport总线通信协议要比其他网络的优先级高。本发明在现有的成熟技术基础上进行创新,实施简便,具有良好的使用和发展前景。
文档编号G06F13/38GK101866326SQ201010189240
公开日2010年10月20日 申请日期2010年5月24日 优先权日2010年5月24日
发明者李勇男, 王欢, 田力, 肖利民, 胡耀辉, 阮利 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1