面向直接内存访问互连通信的多核芯片的MPI实现方法技术

技术编号:20944099 阅读:28 留言:0更新日期:2019-04-24 02:14
本发明专利技术公开了一种面向直接内存访问互连通信的多核芯片的精简MPI的实现方法,通过在接收方和发送方同时建立一个分布式上下文数据结构和一个接收上下文数据结构作为支撑整个并行环境的控制结构和数据结构,消息发送方实际上并没有执行数据发送操作,只需对发送消息进行描述,设置好发送上下文,当接收方运行接收调用时,如果上下文匹配,则将发送方指定的内存地址中的消息读回本地内存空间,在应用层中能以极小的内存足迹实现并行程序的设计以及进程之间实现消息的传递,用于支持利用直接内存访问互连通信的多核芯片的并行程序设计,实现进程同步功能,可以用于直接内存访问互连通信的多核芯片的复杂并行程序设计。

MPI Implementation of Multicore Chips for Direct Memory Access Interconnection Communication

The invention discloses a simplified MPI implementation method for multi-core chips for direct memory access interconnection communication. By establishing a distributed context data structure and a receiving context data structure at the same time as the control structure and data structure supporting the whole parallel environment, the message sender does not actually perform the data transmission operation, but only needs to do so. Describe the sending message and set up the sending context. When the receiver runs the receiving call, if the context matches, it reads the message from the memory address specified by the sender back to the local memory space. In the application layer, it can design parallel programs with minimal memory footprint and transfer messages between processes to support the use of direct memory access interconnection. The parallel programming of the multi-core chips of Xin can realize the function of process synchronization. It can be used in the complex parallel programming of the multi-core chips that directly access the interconnection communication in memory.

【技术实现步骤摘要】
面向直接内存访问互连通信的多核芯片的MPI实现方法
本专利技术属于并行编程领域,涉及面向直接内存访问互连通信的多核芯片的MPI实现方法。
技术介绍
基于消息传递接口(MPI)的并行编程是目前最常见的一种并行编程方法,它主要面向分布式内存架构的并行程序设计,在高性能计算领域获得了广泛应用。MPI为并行编程提供了一种标准,而不代表某一种具体的MPI实现。MPI标准由MPI论坛进行统一管理,目前已经发展到MPI-3.1标准版本,其中包含数百个支持并行程序设计的调用接口。MPI最初应用于分布式多机系统的并行编程,但是随着集成电路技术与工艺的发展,多核芯片成为了目前处理器设计的主流,使得MPI逐渐在片上多核并行程序设计中获得了广泛研究与应用。在大量的多核系统芯片中,采用直接内存访问的核间互连结构实现多核通信是一种常见的技术手段。在这种核间互连结构中,MPI同时还起着保证核间数据一致性的作用,因为直接内存访问的核间互连通信机制一般只提供“路由+直接内存访问”的网络层服务,即硬件只负责将源节点内存中的数据通过网络路由搬运到目的节点的内存中,而将保证数据一致性的方法交由应用层与网络层之间的传输层来完成。MPI在这样的系统中即充当了传输层的角色,为并行编程与进程通信提供服务。硬件只提供核间直接内存访问的网络层的好处是将上层的传输层交由软件程序来实现,为传输层的设计实现提供了较大的探索空间。针对多核芯片的MPI的实现一般采用标准MPI的一个子集来完成片上核间消息传递,在资源极为宝贵且受限的单芯片多核环境中实现轻量级的核间通信,同时支持并行程序框架的实现。目前已有的技术中,均没有充分利用核间直接内存访问的特性来实现足够精简的MPI,并在应用层中以尽可能小的内存足迹实现对并行程序设计与多核通信的支持,而这种方法恰恰是在多核芯片中节点内存资源紧张的轻量级处理器核之间实现并行计算所需要的。
技术实现思路
本专利技术的目的在于提供面向直接内存访问互连通信的多核芯片的MPI实现方法,以克服现有技术的不足。为达到上述目的,本专利技术采用如下技术方案:一种面向直接内存访问互连通信的多核芯片的精简MPI的实现方法,包括以下步骤:在接收方和发送方同时建立一个分布式上下文数据结构和一个接收上下文数据结构,接收方首先要访问发送方的分布式上下文数据结构,通过分布式上下文数据结构来判断是否有消息需要接收,并通过分布式上下文数据结构信息来确定是否和自身要接收的消息相匹配;如果有消息要接收且消息匹配,接收方再单独发起对消息的读操作,将消息读回自身的内存空间。进一步的,分布式上下文在每个进程中都采用静态存储,在整个并行环境运行的过程中占据固定的存储空间。进一步的,分布式上下文数据结构包括发送上下文、进程总数和当前进程编号。进一步的,发送上下文包括一个控制信号量和用于描述发送消息的五个消息描述成员,所述消息描述成员与发送调用中的消息描述参数相对应,并在运行发送调用时会将调用中的消息描述参数分别赋值给对应的消息描述成员,供接收方通过直接内存访问的方式获取;所述控制信号量为发送上下文的控制结构,用于收发双方的同步协调,控制信号量的初始为0。进一步的,接收方首先访问发送方的发送上下文,通过发送方的发送上下文中的控制信号量来判断是否有消息需要接收,并通过发送方的发送上下文中的消息描述成员来确定是否和自身要接收的消息相匹配;如果有消息要接收且消息匹配,接收方再单独发起对消息的读操作,将消息读回自身的内存空间。进一步的,所述的进程总数为整个系统中并行执行的进程数量,由并行系统初始化时指定。进一步的,所述的进程编号为当前进程在所有并行进程中的编号;并行系统初始化时,会给每个进程分配一个互不相同的进程编号值,该进程编号值便保存在这个进程编号分量中。进一步的,接收上下文采用动态存储。进一步的,在实现点对点非阻塞消息传递时定义非阻塞对象结构体类型:非阻塞消息传递的实现依赖于MPI_Context定义的分布式上下文变量,非阻塞对象被定义成一个称为MPI_Request的结构体,该结构体中包括非阻塞调用的消息描述、调用类型、完成标志以及执行状态;所述的消息描述用于备份由当前非阻塞接收/发送调的消息描述参数,其中消息描述的成员包括消息缓冲区指针、消息长度、消息数据类型、源/目的进程编号、消息标志;非阻塞对象结构体只服务于非阻塞相关的调用。进一步的,非阻塞对象结构体采用静态存储,并行编程中,每个进程只需维护一个分布式上下文、接收上下文和非阻塞对象结构体,非阻塞对象结构体用于同时执行的非阻塞接收和发送。进一步的,非阻塞的等待调用首先查询非阻塞调用的执行状态,如果执行状态显示为传输未启动,则根据非阻塞调用中的消息描述和调用类型,重新发起一次阻塞式传输,传输完成后设置相应的完成标志为1,并将执行状态设置为已经完成,最后返回;如果执行状态显示为正在传输,则检测硬件的传输状态,直到传输完成后设置相应的完成标志为1,并将执行状态设置为已经完成,最后返回;如果执行状态显示传输已完成,则直接返回;非阻塞的查询调用首先查询非阻塞调用的执行状态,如果执行状态显示为传输未启动,则将完成表示设置为0,然后返回;如果执行状态显示为正在传输,则通过检测硬件的传输状态是否为空闲来来确定传输是否完成,然后设置相应的完成标志以及执行状态,最后返回;如果执行状态显示传输已完成,则直接返回。与现有技术相比,本专利技术具有以下有益的技术效果:本专利技术一种面向直接内存访问互连通信的多核芯片的精简MPI的实现方法,通过在接收方和发送方同时建立一个分布式上下文数据结构和一个接收上下文数据结构作为支撑整个并行环境的控制结构和数据结构,利用分布式上下文数据结构和一个接收上下文数据结构作为消息传输载体,消息发送方实际上并没有执行数据发送操作,只需对发送消息进行描述,设置好发送上下文即可,当接收方运行接收调用时,如果上下文匹配,则将发送方指定的内存地址中的消息读回本地内存空间,在应用层中能以极小的内存足迹实现并行程序的设计以及进程之间实现消息的传递,用于支持利用直接内存访问互连通信的多核芯片的并行程序设计,以及用于直接内存访问互连通信的多核芯片的复杂并行程序设计。进一步的,在实现点对点非阻塞消息传递时定义非阻塞对象结构体类型,如果需要用到非阻塞消息传递,那么需再定义最多两个非阻塞对象结构体,分别用于同时执行的非阻塞接收和发送,便能实现整个并行系统的搭建,从存储上来说,结构体中的每个成员分量均可以采用单字存储,因此只需极小的内存空间开销便能实现整个并行框架的搭建。进一步的,本专利技术通过定义非阻塞对象结构体,提供了并行进程之间的阻塞和非阻塞消息传递功能,以及进程同步功能,可以用于直接内存访问互联通信的多核芯片的复杂并行程序设计。附图说明图1为分布式上下文类型MPI_Context的声明;图2为接收上下文类型MPI_Rcontext的声明;图3为非阻塞对MPI_Request的声明;图4为分布式上下文的存储及直接内存访问互连的通信模型;图5消息传递协议的执行流程;图6为消息发送的执行流程;图6(a)为MPI_Send的执行流程图;图6(b)为MPI_Isend的执行流程图;图7为消息接收的执行流程;图7(a)为MPI_Recv的执行流程图;图7(b)为本文档来自技高网
...

【技术保护点】
1.一种面向直接内存访问互连通信的多核芯片的精简MPI的实现方法,其特征在于,包括以下步骤:在接收方和发送方同时建立一个分布式上下文数据结构和一个接收上下文数据结构,接收方首先要访问发送方的分布式上下文数据结构,通过分布式上下文数据结构来判断是否有消息需要接收,并通过分布式上下文数据结构信息来确定是否和自身要接收的消息相匹配;如果有消息要接收且消息匹配,接收方再单独发起对消息的读操作,将消息读回自身的内存空间。

【技术特征摘要】
1.一种面向直接内存访问互连通信的多核芯片的精简MPI的实现方法,其特征在于,包括以下步骤:在接收方和发送方同时建立一个分布式上下文数据结构和一个接收上下文数据结构,接收方首先要访问发送方的分布式上下文数据结构,通过分布式上下文数据结构来判断是否有消息需要接收,并通过分布式上下文数据结构信息来确定是否和自身要接收的消息相匹配;如果有消息要接收且消息匹配,接收方再单独发起对消息的读操作,将消息读回自身的内存空间。2.根据权利要求1所述的一种面向直接内存访问互连通信的多核芯片的精简MPI的实现方法,其特征在于,分布式上下文在每个进程中都采用静态存储,在整个并行环境运行的过程中占据固定的存储空间,接收上下文采用动态存储。3.根据权利要求1所述的一种面向直接内存访问互连通信的多核芯片的精简MPI的实现方法,其特征在于,分布式上下文数据结构包括发送上下文、进程总数和当前进程编号。4.根据权利要求3所述的一种面向直接内存访问互连通信的多核芯片的精简MPI的实现方法,其特征在于,发送上下文包括一个控制信号量和用于描述发送消息的五个消息描述成员,所述消息描述成员与发送调用中的消息描述参数相对应,并在运行发送调用时会将调用中的消息描述参数分别赋值给对应的消息描述成员,供接收方通过直接内存访问的方式获取;所述控制信号量为发送上下文的控制结构,用于收发双方的同步协调,控制信号量的初始为0。5.根据权利要求4所述的一种面向直接内存访问互连通信的多核芯片的精简MPI的实现方法,其特征在于,接收方首先访问发送方的发送上下文,通过发送方的发送上下文中的控制信号量来判断是否有消息需要接收,并通过发送方的发送上下文中的消息描述成员来确定是否和自身要接收的消息相匹配;如果有消息要接收且消息匹配,接收方再单独发起对消息的读操作,将消息读回自身的内存空间。6.根据权利要求3所述的一种面向直接内存访问互连通信的多核芯片的精简MPI的实现方法,其特征在于,所述的进程总数为整个系统中并行执行的进程数量,由并行系统初始化时指定。7.根据权利要求3所述的一种面向直接内存访问...

【专利技术属性】
技术研发人员:周泉杨靓何卫强巨新刚
申请(专利权)人:西安微电子技术研究所
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1