CN101866326B - 一种消息传递接口支持总线通信框架 - Google Patents
一种消息传递接口支持总线通信框架 Download PDFInfo
- Publication number
- CN101866326B CN101866326B CN201010189240A CN201010189240A CN101866326B CN 101866326 B CN101866326 B CN 101866326B CN 201010189240 A CN201010189240 A CN 201010189240A CN 201010189240 A CN201010189240 A CN 201010189240A CN 101866326 B CN101866326 B CN 101866326B
- Authority
- CN
- China
- Prior art keywords
- btl
- module
- message
- mpi
- bus communication
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明一种消息传递接口支持总线通信框架,包括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总线通信协议要比其他网络的优先级高。本发明在现有的成熟技术基础上进行创新,实施简便,具有良好的使用和发展前景。
Description
技术领域
本发明基于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所示,图中的名词解释:
(1)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目前提供两种组件:OB1和DR。OB1组件作为默认选择组件。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应用程序接口(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模块的初始化过程为:
(1)MPI API调用MPI初始化函数;
(2)PML层选中组件OB1并调用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进程仍然使用网络协议进行通信。本发明能够充分利用现有技术,满足这种特殊主板的应用需求,具有广阔的应用前景,可望产生显著的经济效益。
附图说明
图1Open MPI架构示意图
图2单主板多操作***互连示意图
图3添加HT模块后的Open MPI架构示意图
图4MPI进程通信路由选择示意图
图5HT BTL的结构示意图
图6HT BTL各功能模块关系示意图
图7配置文件模块的作用示意图
图8HT BTL模块初始化示意图
图9HT BTL对等端连接示意图
图10利用HT BTL实现消息发送示意图
图11HT 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所示,同一操作***内的进程(如P1,P2)利用共享内存进行通信;同一主板不同操作***中的进程(如P1,P3)利用hypertransport总线协议进行通信;不同操作***上的进程(如P1,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;对于共享内存通信和进程内的回环(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 BTL。在这三个BTL模块中,再设置二级优先级,来区分它们之间的调用优先级关系:SELF BTL大于SM BTL,SM BTL大于HT BTL。
如果想让主板间的进程同时调用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_list_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_HIGH
mca_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文件由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 OMPI_BUILD_btl_ht_DSO
component_noinst=
component_install=mca_btl_ht.la
else
component_noinst=libmca_btl_ht.la
component_install=
endif
Claims (2)
1.一种消息传递接口支持总线通信的方法,该方法的实施是基于开源软件Open MPI的基本框架来实现的,其中,该开源软件Open MPI的基本框架包括字节传输层(BTL)、字节传输管理层(BML)、点对点消息层(PML)、消息传递接口应用程序接口(MPI API)、内存池(Mpool)及注册缓存(Rcache),其特征在于:在上述基于开源软件Open MPI的基本框架的基础上,添加支持Hypertransport总线通信的总线通信模块(HT BTL),并通过总线通信模块(HT BTL)调用开源软件Open MPI架构中内存池(Mpool)的内存管理函数;通过设置总线通信模块(HT BTL)的优先级,使得开源软件Open MPI中Hypertransport总线通信的优先级高于以太网通信和Infiniband高速互联网络通信;
其中,所述支持Hypertransport总线通信的总线通信模块(HT BTL)包括核心功能模块,消息类型模块,对等端模块,配置文件模块;其中:
所述核心功能模块,其功能包括:描述总线通信模块(HT BTL)基本信息,初始化总线通信模块(HT BTL),总线通信模块(HT BTL)组件打开和资源释放,建立和释放对等端,分配和释放消息描述符,消息的发送和接收;
所述消息类型模块,其功能包括:定义消息传递接口(MPI)的消息类型,以及实现对消息传递接口(MPI)各种消息的构造,定义的消息供核心功能模块调用;
所述对等端模块,其功能包括:描述进程间通信建立连接时,对等端连接的基本描述信息,对等端连接的建立和释放在核心功能模块当中完成;
所述配置文件模块,其功能包括:完成总线通信模块(HT BTL)配置文件Makefile.am中的路径配置,以及总线通信模块(HT BTL)编译方式的选择;
所述消息类型模块中定义两种消息类型供核心功能模块调用;对等端模块当中定义对字节传输层(BTL)对等端的描述信息,核心功能模块在建立对等端连接时调用这一模块;核心功能模块完成字节传输层(BTL)的初始化,数据收发,资源释放功能;配置文件模块将总线通信模块(HT BTL)的其他三个模块整合到开源软件Open MPI的框架当中;
其中,所述的总线通信模块(HT BTL)的初始化过程为:
(1)MPI应用程序接口(MPI API)调用消息传递接口(MPI)初始化函数;
(2)点对点消息层(PML)选中两个备选组件中的默认组件(OB1)并调用字节传输管理层(BML)的初始化函数;
(3)字节传输管理层(BML)通过其中的唯一组件(r2)初始化所有的字节传输层 (BIL);
(4)调用总线通信模块(HT BTL)的组件初始化函数,并将其加入可用的字节传输层(BTL)模块链表;
其中,所述的总线通信模块(HT BTL)的对等端连接过程为:
(1)点对点消息层(PML)为每个消息传递接口(MPI)进行关联一个字节传输层(BTL)组件;
(2)字节传输管理层(BML)添加可用的字节传输层(BTL)组件链表,并根据优先级对所有可用的字节传输层(BTL)组件进行排序;
(3)为同一主板不同操作***上的消息传递接口(MPI)进程提供总线通信模块(HTBTL)组件信息,并调用建立对等端的函数建立Hypertransport总线连接;
其中,所述的总线通信模块(HT BTL)的消息发送与接收过程为:
(1)调用消息传递接口(MPI)的消息发送函数;
(2)点对点消息层(PML)分配发送请求,根据消息大小选择不同的传输函数,调用BML层发送函数;
(3)字节传输管理层(BML)的发送函数绑定总线通信模块(HT BTL)对等端,调用字节传输层(BTL)发送函数;
(4)总线通信模块(HT BTL)发送函数为发送消息分配描述符,调用Hypertransport总线通信***调用发送函数,将消息发送到对方主机的内存中;
(5)发送方完成数据发送后,接收方依次调用MPI,点对点消息层(PML),字节传输管理层(BML),总线通信模块(HT BTL)的接收函数完成数据接收,并在完成接收以后调用相应的资源释放函数,释放之前分配的***资源。
2.根据权利要求1所述的消息传递接口支持总线通信的方法,其特征在于:开源软件Open MPI定义了字节传输层(BTL)模块的三类调用优先级,总线通信模块(HT BTL)的优先级设置为最高优先级。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010189240A CN101866326B (zh) | 2010-05-24 | 2010-05-24 | 一种消息传递接口支持总线通信框架 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010189240A CN101866326B (zh) | 2010-05-24 | 2010-05-24 | 一种消息传递接口支持总线通信框架 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101866326A CN101866326A (zh) | 2010-10-20 |
CN101866326B true CN101866326B (zh) | 2012-10-24 |
Family
ID=42958057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010189240A Expired - Fee Related CN101866326B (zh) | 2010-05-24 | 2010-05-24 | 一种消息传递接口支持总线通信框架 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101866326B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103780655B (zh) * | 2012-10-24 | 2018-03-06 | 阿里巴巴集团控股有限公司 | 一种消息传递接口任务和资源调度***及方法 |
CN103415085B (zh) * | 2013-07-15 | 2016-08-10 | 同济大学 | 一种通用mac协议处理器的自动生成方法 |
CN103631746B (zh) * | 2013-11-05 | 2016-04-06 | 清华大学 | 一种模块化数据流驱动中多种通信模式的实现方法 |
CN106055415B (zh) * | 2016-05-22 | 2019-07-23 | 上海大学 | 一种构建高效mpi设备层扩展库的方法 |
CN108306844B (zh) * | 2016-10-09 | 2020-07-24 | 上海思立微电子科技有限公司 | 用于服务器与客户端之间的api通信的方法 |
CN112306718B (zh) * | 2020-11-18 | 2023-02-28 | 山东云海国创云计算装备产业创新中心有限公司 | 一种本地设备与异构设备之间的通信方法、***及相关装置 |
CN113505007A (zh) * | 2021-07-12 | 2021-10-15 | 北京鲸鲮信息***技术有限公司 | 基于Linux***的协议栈数据传输方法、计算机设备和存储介质 |
CN116506523B (zh) * | 2023-06-21 | 2023-09-19 | 之江实验室 | 一种适用于多协议的统一通信方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1633130A (zh) * | 2005-01-14 | 2005-06-29 | 清华大学 | 基于硬件支持的虚拟接口结构用户层网络通信*** |
CN101354694A (zh) * | 2007-07-26 | 2009-01-28 | 上海红神信息技术有限公司 | 基于mpu架构的超高扩展超级计算*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7941613B2 (en) * | 2007-05-31 | 2011-05-10 | Broadcom Corporation | Shared memory architecture |
-
2010
- 2010-05-24 CN CN201010189240A patent/CN101866326B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1633130A (zh) * | 2005-01-14 | 2005-06-29 | 清华大学 | 基于硬件支持的虚拟接口结构用户层网络通信*** |
CN101354694A (zh) * | 2007-07-26 | 2009-01-28 | 上海红神信息技术有限公司 | 基于mpu架构的超高扩展超级计算*** |
Non-Patent Citations (2)
Title |
---|
刘云等.HyperTransport端设备接口的设计与实现.《计算机工程与设计》.2008,第29卷(第07期),1660-1663. * |
王江.HT高速总线及其在嵌入式***中的应用.《电子技术应用》.2008,(第05期),121-123. * |
Also Published As
Publication number | Publication date |
---|---|
CN101866326A (zh) | 2010-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101866326B (zh) | 一种消息传递接口支持总线通信框架 | |
CN101784989B (zh) | 在逻辑分区之间分配网络适配器资源的方法和*** | |
US8804488B2 (en) | Endpoint-based parallel data processing in a parallel active messaging interface of a parallel computer | |
US20130074097A1 (en) | Endpoint-based parallel data processing with non-blocking collective instructions in a parallel active messaging interface of a parallel computer | |
CN1617526A (zh) | 在物理端口上模拟多个逻辑端口的方法和装置 | |
CN107133109B (zh) | 一种模块间通信的方法、装置及计算设备 | |
US8756270B2 (en) | Collective acceleration unit tree structure | |
CN1798094A (zh) | 一种使用缓存区的方法 | |
CN102594660A (zh) | 一种虚拟接***换方法、装置及*** | |
CN101222490A (zh) | 一种网络服务器***及方法 | |
EP1351140A1 (en) | A method and apparatus for multicasting messages using a message-passing interface | |
WO2023092415A1 (zh) | 一种消息处理方法及装置 | |
JP2009123201A (ja) | データを処理するためのサーバ‐プロセッサ・ハイブリッド・システムおよび方法 | |
Sun et al. | Republic: Data multicast meets hybrid rack-level interconnections in data center | |
JP4452023B2 (ja) | 分割されたコンピュータ・システムの1つの区画から他の区画にデータを転送する装置と方法 | |
TWI442248B (zh) | 處理資料之處理器-伺服器混合系統 | |
CN102761545A (zh) | 服务处理方法、服务处理器及服务处理*** | |
US11706076B2 (en) | Computer system with computing devices, communication device, task processing device | |
CN100490379C (zh) | 非实时局域网广播通讯方法 | |
CN101702784B (zh) | 光接入多用户居住单元嵌入式设备及多任务通信方法 | |
CN114553980A (zh) | 一种控制流与数据流解耦的消息服务方法 | |
CN113608861A (zh) | 一种软件化载荷计算资源虚拟化分配方法及装置 | |
Fellipe Uller et al. | LWMPI: An MPI library for NoC‐based lightweight manycore processors with on‐chip memory constraints | |
CN101441661A (zh) | 一种在多个嵌入式***之间共享文件资源的***及方法 | |
Pham et al. | Scalable low-latency inter-FPGA networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121024 Termination date: 20180524 |
|
CF01 | Termination of patent right due to non-payment of annual fee |