CN101866326B - 一种消息传递接口支持总线通信框架 - Google Patents

一种消息传递接口支持总线通信框架 Download PDF

Info

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
Application number
CN201010189240A
Other languages
English (en)
Other versions
CN101866326A (zh
Inventor
肖利民
李勇男
胡耀辉
田力
阮利
王欢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beihang University
Original Assignee
Beihang University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beihang University filed Critical Beihang University
Priority to CN201010189240A priority Critical patent/CN101866326B/zh
Publication of CN101866326A publication Critical patent/CN101866326A/zh
Application granted granted Critical
Publication of CN101866326B publication Critical patent/CN101866326B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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)的优先级设置为最高优先级。 
CN201010189240A 2010-05-24 2010-05-24 一种消息传递接口支持总线通信框架 Expired - Fee Related CN101866326B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7941613B2 (en) * 2007-05-31 2011-05-10 Broadcom Corporation Shared memory architecture

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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) 在逻辑分区之间分配网络适配器资源的方法和系统
US20190089574A1 (en) Computer Cluster Arrangement for Processing a Computation Task and Method for Operation Thereof
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) 一种虚拟接口交换方法、装置及系统
CN108768667B (zh) 一种用于多核处理器片内核间网络通信的方法
CN101222490A (zh) 一种网络服务器系统及方法
EP1351140A1 (en) A method and apparatus for multicasting messages using a message-passing interface
WO2023092415A1 (zh) 一种消息处理方法及装置
JP4452023B2 (ja) 分割されたコンピュータ・システムの1つの区画から他の区画にデータを転送する装置と方法
TWI442248B (zh) 處理資料之處理器-伺服器混合系統
CN102761545A (zh) 服务处理方法、服务处理器及服务处理系统
Wu et al. Impact of on-demand connection management in MPI over VIA
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
US6671742B1 (en) Method and apparatus for unifield control and data event exchange in a software system

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