CN104360962B - 匹配于高性能计算机结构的多级嵌套数据传输方法与系统 - Google Patents
匹配于高性能计算机结构的多级嵌套数据传输方法与系统 Download PDFInfo
- Publication number
- CN104360962B CN104360962B CN201410674170.8A CN201410674170A CN104360962B CN 104360962 B CN104360962 B CN 104360962B CN 201410674170 A CN201410674170 A CN 201410674170A CN 104360962 B CN104360962 B CN 104360962B
- Authority
- CN
- China
- Prior art keywords
- data
- task
- data transmission
- node
- module
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种匹配于高性能计算机结构的多级嵌套数据传输方法与系统,其中该系统包括:并行运行于多个计算结点的多个结点通信组件,其中每一结点通信组件运行于一计算结点,每一结点通信组件包括:通信描述管理模块,用于储存和管理所在计算结点需进行的数据传输操作的描述;结点间数据传输执行模块,用于管理和执行所在计算结点与其他计算结点间的数据传输请求;并行运行于所在计算结点的多个CPU的多个数据传输调度模块,其中每一数据传输调度模块运行于一CPU上,用于在所在计算结点内创建、调度和执行通信相关事务。本发明能够匹配通用处理器多级嵌套体系结构,提升数据传输性能。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及匹配于高性能计算机结构的多级嵌套数据传输方法与系统。
背景技术
数值模拟并行应用程序通常需要在不同的并行计算单元之间进行数据通信:将本计算单元中的部分数据发送到其他计算单元,并接收其他计算单元发送的数据。这样的数据通信是数值模拟并行应用程序的重要组成部分,在一些应用中甚至成为主要的时间开销。当前,数值模拟并行应用日趋精细化:如使用三维真实物理模型,模拟长时间尺度,多物理过程复杂耦合等。数值模拟的精细化使得使用上万甚至数十万核进行模拟成为当前数值模拟并行应用的迫切需求。如何在上万甚至数十万核上进行高效的数据通信,则成为数值模拟并行应用程序实现长时间大规模模拟的关键瓶颈问题。
图1为“多计算结点通过专用网络互联,计算结点内多CPU,CPU内多核”的“通用处理器多级嵌套”体系结构示意图。当前,“通用处理器多级嵌套”体系结构成为高性能计算机主流体系结构,在千万亿次计算机乃至十亿亿次计算机中得到广泛的应用。该体系结构不同组件之间的数据传输多级嵌套,其数据传输性能和能耗呈现非均匀特征。具体地:核内的数据传输性能高于CPU核间数据传输;CPU核间数据传输性能高于结点内CPU间数据传输(非均匀访存);结点内CPU间数据传输性能高于结点间数据传输;结点内数据传输与结点间数据传输可并行执行。能耗方面,结点间数据传输能耗高于结点内CPU间数据传输;结点内CPU间数据传输则高于CPU核间;CPU核间高于核内。因此,在上万甚至数十万核进行高效的数据通信,就需要匹配上述“通用处理器多级嵌套”体系结构的数据传输多级嵌套和传输性能非均匀特征,减少数据传输开销,以提升数据通信性能。
当前,数值模拟并行应用程通常使用“MPI进程并行数据传输方法”进行数据传输。“MPI进程并行数据传输方法”的具体技术方案如下:为计算结点的每个CPU核启动一个进程,进程内调用MPI(Message Passing Interface,消息传递接口)库来和其他进程进行数据传输。进程之间不能直接访问数据。
然而,“MPI进程并行数据传输方法”不区分结点内和结点间数据传输,不匹配“通用处理器多级嵌套”体系结构。这使得使用该方案的应用程序即使是计算结点内数据传输也不得不对待传输数据进行额外封装,引入数据打包和库函数调用等额外开销,造成数据传输性能损失。并且,该数据传输方法忽略了结点间数据传输、结点内CPU间数据传输和CPU内核间数据传输的性能非均匀性,使得数据传输调度难以针对“通用处理器多级嵌套”体系结构进行优化。受限于当前很多MPI系统不能有效实现异步数据通信,“MPI进程并行数据传输方法”也不能有效利用结点内和结点间数据传输可并行的特性提升数据传输吞吐量。此外,在上万甚至数十万核数据传输时,该方案中的MPI进程数将达到上万到数十万,其启动时间长(数分钟到数十分钟),无故障时间短(通常少于1小时),无法满足数值模拟程序长时间模拟的需求。
发明内容
本发明实施例提供一种匹配于高性能计算机结构的多级嵌套数据传输系统,用以提升数据传输性能,该系统包括:
并行运行于多个计算结点的多个结点通信组件,其中每一结点通信组件运行于一计算结点,每一结点通信组件包括:
通信描述管理模块,用于储存和管理所在计算结点需进行的数据传输操作的描述;
结点间数据传输执行模块,用于管理和执行所在计算结点与其他计算结点间的数据传输请求;
并行运行于所在计算结点的多个CPU的多个数据传输调度模块,其中每一数据传输调度模块运行于一CPU上,用于在所在计算结点内创建、调度和执行通信相关事务;
所述数据传输调度模块包括:
调度任务管理模块,用于创建通信调度任务,所述通信调度任务包括打包数据到临时缓冲区的数据打包任务、在计算结点内缓冲区间数据复制的复制任务和从临时缓冲区解包数据的数据解包任务;
CPU调度执行模块,用于调度计算结点CPU核,执行打包数据到临时缓冲区、计算结点内缓冲区间数据复制、从临时缓冲区解包数据操作;向结点间数据传输执行模块发起结点间数据传输请求和显式推进数据传输请求。
一个实施例中,所述数据传输操作的描述包括:待通信数据的源缓冲区、目的缓冲区、身份标签以及传输完成方法;所述传输完成方法包括:在不同计算结点间将源缓冲区中待通信数据打包到指定临时缓冲区的方法、从指定临时缓冲区解包数据到目的缓冲区的方法,在同一计算结点将待通信数据从源缓冲区复制到目的缓冲区的方法,以及数据传输量计算方法。
一个实施例中,所述结点间数据传输执行模块具体用于:
利用计算结点通信硬件,异步地将指定缓冲区中的数据传输到指定计算结点的指定缓冲区;为每一次数据传输维护一个数据传输状态;
响应数据传输调度模块的结点间数据传输请求和显式推进数据传输请求。
本发明实施例还提供一种上述匹配于高性能计算机结构的多级嵌套数据传输系统的数据传输方法,用以提升数据传输性能,该方法包括:
为每个参与通信的计算结点创建一结点通信组件,包括一通信描述管理模块、一结点间数据传输执行模块、以及与计算结点CPU相同数目的数据传输调度模块;
为每个计算结点的每个数据传输操作生成数据传输操作描述对象,将数据传输操作描述对象移交至通信描述管理模块进行管理;
将计算结点上的数据传输操作分配给CPU对应的数据传输调度模块,数据传输调度模块将数据传输操作聚类并创建相应的通信调度任务;
初始化数据传输调度模块中的CPU调度执行模块,初始化结点间数据传输执行模块;
调度执行通信调度任务,完成数据传输。
一个实施例中,所述数据传输操作描述对象包括:从本计算结点发送到其他计算结点的数据发送操作描述对象;从本计算结点内不同缓冲区间复制数据的数据复制操作描述对象;接收其他计算结点发送数据的数据接收操作描述对象;
数据传输调度模块将数据传输操作聚类并创建相应的通信调度任务,包括:
数据传输调度模块中的调度任务管理模块对数据发送操作描述对象进行排序,将排序获得的数据发送操作描述对象序列按目的计算结点、目的CPU对分解为多个子序列,对子序列进一步分解,为分解所得每个数据发送操作描述对象序列定义一打包发送任务,并为每个打包发送任务创建一通信任务对象;
数据传输调度模块中的调度任务管理模块对数据接收操作描述对象进行排序,将排序获得的数据接收操作描述对象序列按源计算结点、源CPU对分解为多个子序列,对子序列进一步分解,为分解所得每个数据接收操作描述对象序列定义一接收解包任务,并为每个接收解包任务创建一通信任务对象;
数据传输调度模块中的调度任务管理模块对数据复制操作描述对象进行排序,将排序获得的数据复制操作描述对象序列按源CPU、目的缓冲区对分解为多个子序列,为每个子序列定义一本地复制任务,并为每个本地复制任务创建一通信任务对象。
一个实施例中,调度任务管理模块对数据发送操作描述对象、数据接收操作描述对象或数据复制操作描述对象进行排序时,对描述了相同的数据传输操作的操作描述对象集合,不同次的排序得到相同的序列;
对子序列进一步分解时,对描述了相同的数据传输操作的操作描述对象序列,不同次的分割的结果相同。
一个实施例中,初始化CPU调度执行模块,包括:
清空CPU调度执行模块;读取调度任务管理模块,将打包发送任务对象、本地复制任务对象和接收解包任务对象注册到CPU调度执行模块;设置接收解包任务为未激活状态;
初始化结点间数据传输执行模块,包括:
清空结点间数据传输执行模块,遍历调度任务管理模块,为每一个接收解包任务创建一个临时缓冲区,并为该结点间数据传输执行模块发起一个接收数据的结点间数据传输请求。
一个实施例中,调度执行通信调度任务,包括:
按如下方式调度执行打包发送任务:
CPU调度执行模块遍历所有已注册的打包发送任务对象,并为打包发送任务创建临时缓冲区;按顺序遍历打包发送任务对象的数据传输操作描述对象序列,调用操作描述对象的数据打包操作将数据打包到临时缓冲区;向结点间数据传输执行模块发起将数据从临时缓冲区发送到打包发送任务所对应的目标计算结点的结点间数据传输请求;
按如下方式调度执行本地复制任务:
CPU调度执行模块遍历所有已注册的本地复制任务对象,并遍历本地复制任务对象的数据传输操作描述对象序列,调用操作描述对象的数据复制操作将数据由源缓冲区复制到目标缓冲区;向结点间数据传输执行模块发起显式推进数据传输的请求;
按如下方式调度执行接收解包任务:
CPU调度执行模块循环执行如下步骤,直到所有注册到该CPU调度执行模块的接收解包任务完成:
遍历已激活的接收解包任务,对每个任务,按顺序遍历该任务包含的数据传输描述对象序列,调用数据传输描述对象的数据解包操作从该任务关联的临时缓冲区解包数据;
向结点间数据传输执行模块发起显式推进数据传输的请求;
检查结点间数据传输执行模块,遍历已完成的数据接收请求,激活每个已完成的数据接收请求对应的接收解包任务,并将完成的请求从结点间数据传输执行模块移除。
一个实施例中,在选取MPI作为结点间通信编程接口,选取OpenMP作为结点内多CPU多核编程接口时,结点间数据传输执行模块使用MPI非阻塞通信实现,CPU调度执行模块使用单生产者-多消费者队列实现;其中:
在每个计算结点上开启一个MPI进程,进程内每个CPU核开启一个OpenMP线程,并将这些线程按所属的CPU编号进行分组,每组线程为SMP线程组,选取SMP线程组中编号最小的线程作为线程组的管理线程,管理线程代表该线程组对应的CPU;
MPI进程并行地在每个MPI进程内创建一通信描述管理对象、一结点间数据传输执行对象,为每个管理线程初始化数据传输调度模块;
采用MPI进程和线程并行执行数据传输。
本发明实施例的匹配于高性能计算机结构的多级嵌套数据传输系统及方法,能够匹配“多计算结点专用网络互联,计算结点多CPU,CPU内多核”的“通用处理器多级嵌套”体系结构,充分针对该体系结构计算结点间、计算结点内CPU间和CPU内核间数据传输的性能非均匀性进行优化,从而提供高性能的并行数据传输,以提升数据传输性能;并且,数据传输充分利用计算结点内和计算结点间数据传输的可并行性,实现计算结点内和计算结点间数据传输重叠,以提升数据传输吞吐量;在上万至数十万处理器核并行规模下,本发明实施例相比传统方案能有效提升无故障运行时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为现有技术中“通用处理器多级嵌套”体系结构示意图;
图2为本发明实施例中匹配于高性能计算机结构的多级嵌套数据传输系统的结构示意图;
图3为本发明实施例中匹配于高性能计算机结构的多级嵌套数据传输系统的数据传输方法流程图;
图4为本发明实施例中在典型的“通用处理器多级嵌套”体系结构下的具体实施流程图;
图5为本发明实施例中匹配于高性能计算机结构的多级嵌套数据传输系统及其数据传输方法的实际应用效果图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
为了匹配“通用处理器多级嵌套”体系结构的数据传输多级嵌套和传输性能非均匀特征,减少数据传输开销,以提升数据通信性能,本发明实施例提供一种匹配于高性能计算机结构的多级嵌套数据传输系统。图2为本发明实施例中匹配于高性能计算机结构的多级嵌套数据传输系统的结构示意图,如图2所示,本发明实施例中匹配于高性能计算机结构的多级嵌套数据传输系统包括:
并行运行于多个计算结点的多个结点通信组件,其中每一结点通信组件运行于一计算结点,每一结点通信组件包括:
通信描述管理模块,用于储存和管理所在计算结点需进行的数据传输操作的描述;
结点间数据传输执行模块,用于管理和执行所在计算结点与其他计算结点间的数据传输请求;
并行运行于所在计算结点的多个CPU的多个数据传输调度模块,其中每一数据传输调度模块运行于一CPU上,用于在所在计算结点内创建、调度和执行通信相关事务。
具体实施时,在参与数据传输的每个计算结点上并行运行结点通信组件,以完成数据传输。结点通信组件包括通信描述管理模块、结点间数据传输执行模块和数据传输调度模块。
通信描述管理模块用于储存和管理所在计算结点需进行的数据传输操作的描述。数据传输操作可以是结点内的数据传输操作,也可以是结间点的数据传输操作,例如将计算结点C0上CPU S0上的数据缓冲区D0的部分数据复制到计算结点C1的CPU S1上的数据缓冲区D1内的一次数据移动操作。可以称数据缓冲区D0为源缓冲区,简称源;数据缓冲区D1为目的缓冲区,简称目的。实施例中,数据传输操作的描述可以包括:待通信数据的源缓冲区、目的缓冲区、身份标签以及传输完成方法。其中,待通信数据的身份标签也可称为数据传输身份标签,可用于区分相同的(源,目的)对的多个不同数据传输的标签,通常可以用整数表示。数据传输完成方法可以包括:在不同计算结点间将源缓冲区中待通信数据打包到指定临时缓冲区的方法、从指定临时缓冲区解包数据到目的缓冲区的方法,在同一计算结点将待通信数据从源缓冲区复制到目的缓冲区的方法,以及数据传输量计算方法。
结点间数据传输执行模块用于管理和执行所在计算结点与其他计算结点间的数据传输请求。具体可以包括:利用计算结点通信硬件,异步地将指定缓冲区中的数据传输到指定计算结点的指定缓冲区;为每一次数据传输维护一个数据传输状态;响应数据传输调度模块的结点间数据传输请求;响应数据传输调度模块的显式推进数据传输请求。
数据传输调度模块用于在所在计算结点内创建、调度和执行通信相关事务。具体可以包括:调度计算结点CPU核,执行打包数据到临时缓冲区、计算结点内缓冲区间数据复制、从临时缓冲区解包数据操作;向结点间数据传输执行模块发起结点间数据传输请求;向结点间数据传输执行模块发起显式推进数据传输请求。
具体实施时,数据传输调度模块可以包括调度任务管理模块和CPU调度执行模块,在每块CPU上执行一份,并行地对分配给所在CPU的数据传输进行管理和调度。调度任务管理模块可用于创建通信调度任务,包括打包数据到临时缓冲区的数据打包任务、在计算结点内缓冲区间数据复制的复制任务和从临时缓冲区解包数据的数据解包任务。CPU调度执行模块可用于调度CPU拥有的核协同完成这些通信调度任务,即调度计算结点CPU核,执行打包数据到临时缓冲区、计算结点内缓冲区间数据复制、从临时缓冲区解包数据操作;CPU调度执行模块还可用于向结点间数据传输执行模块发起结点间数据传输请求和显式推进数据传输请求。
图3为本发明实施例中匹配于高性能计算机结构的多级嵌套数据传输系统的数据传输方法流程图。如图3所示,匹配于高性能计算机结构的多级嵌套数据传输系统的数据传输方法可以包括:
步骤301、为每个参与通信的计算结点创建一结点通信组件,包括一通信描述管理模块、一结点间数据传输执行模块、以及与计算结点CPU相同数目的数据传输调度模块;
步骤302、为每个计算结点的每个数据传输操作生成数据传输操作描述对象,将数据传输操作描述对象移交至通信描述管理模块进行管理;
步骤303、将计算结点上的数据传输操作分配给CPU对应的数据传输调度模块,数据传输调度模块将数据传输操作聚类并创建相应的通信调度任务;
步骤304、初始化数据传输调度模块中的CPU调度执行模块,初始化结点间数据传输执行模块;
步骤305、调度执行通信调度任务,完成数据传输。
具体实施时,匹配于高性能计算机结构的多级嵌套数据传输系统的数据传输方法的第一步,是需要初始化结点通信组件。实施过程中(并行地)为每个参与通信的计算结点上创建1份结点通信组件,包括1个通信描述管理模块、1个结点间数据传输执行模块以及和计算结点CPU相同数目的数据传输调度模块。初始化上述模块为不包含任何通信状态,即空状态。
第二步是生成通信描述。实施时(并行地)为每个计算结点上的每个数据传输操作生成数据传输操作描述对象,并将这些对象移交给通信描述管理模块进行管理。实施例中可以生成如下的数据传输操作描述对象:从本计算结点发送到其他计算结点的数据发送操作描述对象;从本计算结点内不同缓冲区间复制数据的数据复制操作描述对象;接收其他计算结点发送数据的数据接收操作描述对象。实施过程中需要保证数据发送操作描述对象和数据接收操作描述对象在参与通信的计算结点中一一配对。
第三步是创建通信调度任务。实施时(并行地)将计算结点上的数据传输操作分配给CPU对应的数据传输调度模块,由该模块将数据传输操作聚类并创建相应的通信调度任务。实施例中分配方法可以包括:遍历通信描述管理模块,将源数据缓冲区所在CPU相同的数据发送操作描述对象、目的数据缓冲区所在CPU相同的数据接收操作对象和目的数据缓冲区所在CPU相同的数据复制操作描述对象分配给对应的CPU所拥有的数据传输调度模块。数据传输调度模块将数据传输操作聚类时,可以将细粒度的数据传输操作聚类为较粗粒度的数据传输操作。实施例中,数据传输调度模块可以通过如下步骤聚类数据传输操作并创建通信调度任务:
调度任务管理模块对数据发送操作描述对象进行排序,将排序获得的数据发送操作描述对象序列按(目的计算结点,目的CPU)对分解为多个子序列,对子序列进一步分解,为分解所得每个数据发送操作描述对象序列定义一打包发送任务,并为每个打包发送任务创建一通信任务对象。具体的,调度任务管理模块对数据发送操作描述对象进行排序时,可以按指定的稳定排序方法进行排序。这里,稳定排序方法可以是:对描述了相同的数据传输操作的操作描述对象集合,不同次的排序得到相同的序列。对子序列进一步分解时,可以使用指定的稳定分割方法对子序列进行进一步分解,稳定的分割方法可以是:对描述了相同的数据传输操作的操作描述对象序列,不同次的分割的结果相同。
调度任务管理模块对数据接收操作描述对象进行排序,将排序获得的数据接收操作描述对象序列按(源计算结点,源CPU)对分解为多个子序列,对子序列进一步分解,为分解所得每个数据接收操作描述对象序列定义一接收解包任务,并为每个接收解包任务创建一通信任务对象。实施例中调度任务管理模块可以按与上面相同的稳定排序方法对数据接收操作描述对象进行排序,使用与上面相同的稳定分割方法对子序列进行进一步分解。
数据传输调度模块中的调度任务管理模块对数据复制操作描述对象进行排序,将排序获得的数据复制操作描述对象序列按(源CPU,目的缓冲区)对分解为多个子序列,为每个子序列定义一本地复制任务,并为每个本地复制任务创建一通信任务对象。实施例中,调度任务管理模块可以按与上面相同的稳定排序方法将数据复制操作描述对象进行排序。
第四步是初始化CPU调度执行模块。具体可以包括:清空CPU调度执行模块;读取调度任务管理模块,将其中的打包发送任务对象、本地复制任务对象和接收解包任务对象注册到CPU调度执行模块;设置接收解包任务为未激活状态。
第五步是初始化结点间数据传输执行模块。具体可以包括:清空结点间数据传输执行模块,遍历调度任务管理模块,为每一个接收解包任务创建一个临时缓冲区,并为结点间数据传输执行模块发起一个旨在接收数据的结点间数据传输请求。
第六步是调度执行打包发送任务。具体的,CPU调度执行模块可以(并行地)遍历所有已注册的打包发送任务对象,并执行如下操作:
为打包发送任务创建临时缓冲区;
按顺序遍历打包发送任务对象的数据传输操作描述对象序列,调用操作描述对象的数据打包操作将数据打包到临时缓冲区;
向结点间数据传输执行模块发起旨在将临时缓冲区发送到打包发送任务所对应的目标计算结点的结点间数据传输请求。
第七步是调度执行本地复制任务。具体的,CPU调度执行模块可以(并行地)遍历所有已注册的本地复制任务对象,并执行如下操作:
遍历本地复制任务对象的数据传输操作描述对象序列,调用操作描述对象的数据复制操作将数据由源缓冲区复制到目标缓冲区;
向结点间数据传输执行模块发起显式推进数据传输的请求。
第八步是调度执行接收解包任务。具体的,CPU调度执行模块可以(并行地)循环执行如下步骤,直到所有注册到该模块的接收解包任务完成:
遍历已激活的接收解包任务,对每个任务,按顺序遍历其包含的数据传输描述对象序列,调用数据传输描述对象的数据解包操作从该任务关联的临时缓冲区解包数据;
向结点间数据传输执行模块发起显式推进数据传输的请求;
检查结点间数据传输执行模块,遍历其中已完成的数据接收请求,激活每个已完成的数据接收请求对应的接收解包任务,并将完成的请求从结点间数据传输执行模块移除。
第九步是完成数据传输,等待结点间数据传输执行模块完成所有数据传输请求。
上述实施例中,描述为“并行地”表示该操作可由多个CPU或CPU的多个核并行地执行。在多次连续的数据传输时,若数据传输描述未发生变化,则只需重新执行第四步到第九步;若数据传输描述发生变化,则需要重新执行第三步到第九步。
下面举一具体实例说明本发明实施例中匹配于高性能计算机结构的多级嵌套数据传输系统的数据传输方法的具体实施。本例中采用了“MPI进程+线程”混合并行的数据传输方法,主要是考虑到当前高性能计算机普遍采用MPI作为结点间通信编程接口,采用OpenMP线程或POSIX线程作为结点内多CPU多核编程接口。以阐明方案为目的,这里选取MPI作为结点间通信编程接口,选取OpenMP作为结点内多CPU多核编程接口。在此编程接口下,结点间数据传输执行模块使用MPI非阻塞通信实现,CPU调度执行模块则使用“单生产者-多消费者”队列实现。图4为本例中在典型的“通用处理器多级嵌套”体系结构下的具体实施流程图。如图4所示,一次完整的数据传输过程的实施步骤如下:
第一步:初始化数据传输系统
1.1在每个计算结点上开启一个MPI进程,进程内每个CPU核开启一个OpenMP线程,并将这些线程按所属的CPU编号进行分组,称每组线程为SMP线程组,选取SMP线程组中编号最小的线程作为线程组的管理线程,简称管理线程,管理线程代表该线程组对应的CPU。
1.2MPI进程并行地在每个MPI进程内创建1个通信描述管理对象、1个结点间数据传输执行对象;为每个管理线程初始化数据传输调度模块,即创建1个调度任务管理对象和1个CPU调度执行对象。
第二步:生成通信描述
使用(MPI进程号,管理线程号,线程内编号)三元组给待传输的所有数据缓冲区进行编号。这里线程内编号是指区分位于管理线程所在CPU的多个数据缓冲区的缓冲区编号。将数据传输描述为这样的数据缓冲区之间的数据移动。为MPI进程上的每一条数据传输生成一个数据传输描述对象,并注册到通信描述管理对象中,相同的(源,目的)对之间的多条数据传输使用不同的整数标签区分。这些数据传输可以包括:将数据发送到其他MPI进程、从其他MPI进程接收数据和从本MPI进程内不同缓冲区之间进行数据复制。
第三步:创建通信调度任务
3.1将注册到通信描述管理对象的数据传输描述对象按如下方法分配给对应的管理线程的调度任务管理对象:源管理线程号相同的数据发送描述对象、目的管理线程号相同的数据接收和进程内数据复制描述对象。
3.2管理线程的调度任务管理对象并行地执行如下操作:将数据发送操作描述对象按(源MPI进程号,源管理线程号,源数据缓冲区编号,目的MPI进程号,目的管理线程号,目的数据缓冲区编号,标签)排列为字典序,对排序后的操作描述序列按(目的计算结点,目的管理进程号)对分解为若干子序列,然后使用如下分割方法对这些子序列进行进一步分解,为分解所得的每个操作描述对象序列创建一个打包发送任务对象。分割方法为:从操作描述序列中第一个对象开始,选取最少的连续的对象序列,其通信量总和不少于指定值,将其切分作为一个通信任务,对剩余的序列进行同样的操作,直到序列为空。
3.3管理线程的调度任务管理对象并行地执行如下操作:将数据接收操作描述对象按如上方法排序,对排序后的操作描述序列按(源MPI进程号,源管理进程号)对分解为若干子序列,然后使用如上分割方法对这些子序列进行进一步分解,为分解所得的每个操作描述对象序列创建一个接收解包任务对象。
3.3管理线程的调度任务管理对象并行地执行如下操作:将数据复制操作描述对象按上述方法排序,对排序后的序列按(源管理线程号,目的缓冲区编号)对分解为若干子序列,为每个子序列创建一个本地复制任务对象。
第四步:初始化CPU调度执行模块
并行地将管理线程的调度任务管理对象拥有的打包发送任务对象、本地复制任务对象和接收解包任务对象注册到管理线程的CPU调度执行对象;设置CPU调度执行对象中的接收解包任务对象为未激活状态。
第五步:初始化结点间数据传输执行模块
遍历MPI进程内所有管理线程的调度任务管理对象,为其拥有的每一个接收解包任务对象创建对应的临时缓冲区,使用MPI非阻塞接收通信接口为该任务发起结点间数据接收请求,将这个请求注册到结点间数据传输对象。
第六步:调度执行打包发送任务:MPI进程内所有管理线程激活SMP线程组,线程组中所有线程并行执行如下操作,直到管理线程CPU调度执行对象中无打包发送任务对象:
6.1从CPU调度执行对象获取一个打包发送任务对象。
6.2为该对象创建临时缓冲区,依次调用任务对象数据传输描述对象序列中对象的数据打包操作,将数据打包到该临时缓冲区。
6.3使用MPI非阻塞通信接口为该任务发起结点间数据发送请求,将这个请求注册到结点间数据传输对象。
第七步:调度执行本地复制任务:MPI进程内所有管理线程激活SMP线程组,线程组中所有线程并行执行如下操作,直到管理线程CPU调度执行对象中无本地复制任务对象:
7.1从CPU调度执行对象获取一个本地复制任务对象。
7.2依次调用任务对象数据传输描述对象序列中对象的数据复制操作,完成进程内数据传输。
7.3请求结点间数据传输对象非阻塞遍历通信请求,推进结点间数据传输进展。
第八步:调度执行接收解包任务:MPI进程内所有管理线程激活SMP线程组,线程组中所有线程并行执行如下操作,直到管理线程CPU调度执行对象中无接收解包任务对象:
8.1从CPU调度执行获取一个激活的接收解包任务对象。
8.2依次调用任务对象数据传输描述对象序列中对象的数据解包操作,从任务对象关联的临时缓冲区内解包数据到目的缓冲区。
8.3重复8.1直到当前没有已激活的接收解包任务对象。
8.4请求结点间数据传输对象非阻塞遍历通信请求,推进结点间数据传输进展。
8.5遍历结点间数据传输对象中已完成的数据接收请求,激活每个请求对应的接收解包任务,并将完成的请求从该对象移除。
第九步:等待通信完成:使用MPI阻塞通信接口等待结点间数据传输对象完成所有结点间数据传输请求。
由上述实施例可以得知,本发明实施例技术方案紧密结合“通用处理器多级嵌套”体系结构特征进行设计。首先,本发明实施例区分结点间数据传输和结点内数据传输,并针对性地设计了“结点间数据传输执行模块”和“数据传输调度模块”,并将结点间和结点内数据传输分类调度,使得数据传输和体系结构匹配。其次,本发明实施例针对计算结点间、结点内CPU间以及CPU核间的数据传输性能非均匀特性,设计了静态任务划分和实时平衡任务调度相结合的数据传输调度方法,能有效地减少数据传输开销。最后,本发明实施例充分利用了当前高性能计算机结点内数据传输和结点间数据传输可并行的特征,通过显式地推动数据传输将结点内数据传输(即数据复制)和结点间数据传输重叠,提升了数据传输吞吐量。具体实施时,本发明实施例还可使用“MPI进程+线程”的混合并行实现方案,在当前高性能计算机结点普遍数十核的情况下,减少MPI进程数一个量级以上,使得数万进程减少为上千进程,避免了传统MPI进程并行数据传输技术上万进程以后启动时间长无故障时间短的现实问题。
将本发明技术方案在实际的数值模拟并行应用程序JEMS-FDTD上进行了测试。JEMS-FDTD是使用时域有限差分方法进行电磁波传播模拟的应用程序,测试环境为典型的“多计算结点专用网络互联,计算结点多CPU,CPU多核”体系结构:包含1000个计算结点;每个计算结点包含2块CPU,每块CPU包含6个计算核心,配备12MB三级缓存;每个计算结点安装48GB内存。固定问题规模,在324核到10368核的多个不同规模测试实际的数据传输性能(图5的实际应用效果图)。和传统的“MPI进程并行数据传输技术”相比,本发明实施例提升不同情况下数据传输性能10%到40%,在10368核时甚至提升性能47%。这说明了本发明实施例能有效提升数据传输性能。
在本发明实施例中,数据传输方法和数据传输调度充分匹配高性能计算机体系结构。其中,“MPI进程+OpenMP线程”混合并行方法、“生产者-消费者”队列、数据传输描述对象排序方法和数据传输对象序列分割方法等均为一种具体实例。其他达到相同目的的实现方式,如“MPI进程+POSIX线程”混合并行,复杂的动态任务调度器,不同的数据传输对象描述方法和序列分割方法等均应视为对实现方式的变化,应当作为本发明实施例的保护内容。在符合上述主要特征的条件下的细节改进也应当作为本发明实施例的保护内容。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种匹配于高性能计算机结构的多级嵌套数据传输系统,其特征在于,包括:
并行运行于多个计算结点的多个结点通信组件,其中每一结点通信组件运行于一计算结点,每一结点通信组件包括:
通信描述管理模块,用于储存和管理所在计算结点需进行的数据传输操作的描述;
结点间数据传输执行模块,用于管理和执行所在计算结点与其他计算结点间的数据传输请求;
并行运行于所在计算结点的多个CPU的多个数据传输调度模块,其中每一数据传输调度模块运行于一CPU上,用于在所在计算结点内创建、调度和执行通信相关事务;
所述数据传输调度模块包括:
调度任务管理模块,用于创建通信调度任务,所述通信调度任务包括打包数据到临时缓冲区的数据打包任务、在计算结点内缓冲区间数据复制的复制任务和从临时缓冲区解包数据的数据解包任务;
CPU调度执行模块,用于调度计算结点CPU核,执行打包数据到临时缓冲区、计算结点内缓冲区间数据复制、从临时缓冲区解包数据操作;向结点间数据传输执行模块发起结点间数据传输请求和显式推进数据传输请求。
2.如权利要求1所述的系统,其特征在于,所述数据传输操作的描述包括:待通信数据的源缓冲区、目的缓冲区、身份标签以及传输完成方法;所述传输完成方法包括:在不同计算结点间将源缓冲区中待通信数据打包到指定临时缓冲区的方法、从指定临时缓冲区解包数据到目的缓冲区的方法,在同一计算结点将待通信数据从源缓冲区复制到目的缓冲区的方法,以及数据传输量计算方法。
3.如权利要求1所述的系统,其特征在于,所述结点间数据传输执行模块具体用于:
利用计算结点通信硬件,异步地将指定缓冲区中的数据传输到指定计算结点的指定缓冲区;为每一次数据传输维护一个数据传输状态;
响应数据传输调度模块的结点间数据传输请求和显式推进数据传输请求。
4.一种权利要求1所述匹配于高性能计算机结构的多级嵌套数据传输系统的数据传输方法,其特征在于,包括:
为每个参与通信的计算结点创建一结点通信组件,包括一通信描述管理模块、一结点间数据传输执行模块、以及与计算结点CPU相同数目的数据传输调度模块;
为每个计算结点的每个数据传输操作生成数据传输操作描述对象,将数据传输操作描述对象移交至通信描述管理模块进行管理;
将计算结点上的数据传输操作分配给CPU对应的数据传输调度模块,数据传输调度模块将数据传输操作聚类并创建相应的通信调度任务;
初始化数据传输调度模块中的CPU调度执行模块,初始化结点间数据传输执行模块;
调度执行通信调度任务,完成数据传输。
5.如权利要求4所述的方法,其特征在于,所述数据传输操作描述对象包括:从本计算结点发送到其他计算结点的数据发送操作描述对象;从本计算结点内不同缓冲区间复制数据的数据复制操作描述对象;接收其他计算结点发送数据的数据接收操作描述对象;
数据传输调度模块将数据传输操作聚类并创建相应的通信调度任务,包括:
数据传输调度模块中的调度任务管理模块对数据发送操作描述对象进行排序,将排序获得的数据发送操作描述对象序列按目的计算结点、目的CPU对分解为多个子序列,对子序列进一步分解,为分解所得每个数据发送操作描述对象序列定义一打包发送任务,并为每个打包发送任务创建一通信任务对象;
数据传输调度模块中的调度任务管理模块对数据接收操作描述对象进行排序,将排序获得的数据接收操作描述对象序列按源计算结点、源CPU对分解为多个子序列,对子序列进一步分解,为分解所得每个数据接收操作描述对象序列定义一接收解包任务,并为每个接收解包任务创建一通信任务对象;
数据传输调度模块中的调度任务管理模块对数据复制操作描述对象进行排序,将排序获得的数据复制操作描述对象序列按源CPU、目的缓冲区对分解为多个子序列,为每个子序列定义一本地复制任务,并为每个本地复制任务创建一通信任务对象。
6.如权利要求5所述的方法,其特征在于,调度任务管理模块对数据发送操作描述对象、数据接收操作描述对象或数据复制操作描述对象进行排序时,对描述了相同的数据传输操作的操作描述对象集合,不同次的排序得到相同的序列;
对子序列进一步分解时,对描述了相同的数据传输操作的操作描述对象序列,不同次的分割的结果相同。
7.如权利要求5所述的方法,其特征在于,初始化CPU调度执行模块,包括:
清空CPU调度执行模块;读取调度任务管理模块,将打包发送任务对象、本地复制任务对象和接收解包任务对象注册到CPU调度执行模块;设置接收解包任务为未激活状态;
初始化结点间数据传输执行模块,包括:
清空结点间数据传输执行模块,遍历调度任务管理模块,为每一个接收解包任务创建一个临时缓冲区,并为该结点间数据传输执行模块发起一个接收数据的结点间数据传输请求。
8.如权利要求5所述的方法,其特征在于,调度执行通信调度任务,包括:
按如下方式调度执行打包发送任务:
CPU调度执行模块遍历所有已注册的打包发送任务对象,并为打包发送任务创建临时缓冲区;按顺序遍历打包发送任务对象的数据传输操作描述对象序列,调用操作描述对象的数据打包操作将数据打包到临时缓冲区;向结点间数据传输执行模块发起将数据从临时缓冲区发送到打包发送任务所对应的目标计算结点的结点间数据传输请求;
按如下方式调度执行本地复制任务:
CPU调度执行模块遍历所有已注册的本地复制任务对象,并遍历本地复制任务对象的数据传输操作描述对象序列,调用操作描述对象的数据复制操作将数据由源缓冲区复制到目标缓冲区;向结点间数据传输执行模块发起显式推进数据传输的请求;
按如下方式调度执行接收解包任务:
CPU调度执行模块循环执行如下步骤,直到所有注册到该CPU调度执行模块的接收解包任务完成:
遍历已激活的接收解包任务,对每个任务,按顺序遍历该任务包含的数据传输描述对象序列,调用数据传输描述对象的数据解包操作从该任务关联的临时缓冲区解包数据;
向结点间数据传输执行模块发起显式推进数据传输的请求;
检查结点间数据传输执行模块,遍历已完成的数据接收请求,激活每个已完成的数据接收请求对应的接收解包任务,并将完成的请求从结点间数据传输执行模块移除。
9.如权利要求4至8任一项所述的方法,其特征在于,在选取MPI作为结点间通信编程接口,选取OpenMP作为结点内多CPU多核编程接口时,结点间数据传输执行模块使用MPI非阻塞通信实现,CPU调度执行模块使用单生产者-多消费者队列实现;其中:
在每个计算结点上开启一个MPI进程,进程内每个CPU核开启一个OpenMP线程,并将这些线程按所属的CPU编号进行分组,每组线程为SMP线程组,选取SMP线程组中编号最小的线程作为线程组的管理线程,管理线程代表该线程组对应的CPU;
MPI进程并行地在每个MPI进程内创建一通信描述管理对象、一结点间数据传输执行对象,为每个管理线程初始化数据传输调度模块;
采用MPI进程和线程并行执行数据传输。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410674170.8A CN104360962B (zh) | 2014-11-21 | 2014-11-21 | 匹配于高性能计算机结构的多级嵌套数据传输方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410674170.8A CN104360962B (zh) | 2014-11-21 | 2014-11-21 | 匹配于高性能计算机结构的多级嵌套数据传输方法与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104360962A CN104360962A (zh) | 2015-02-18 |
CN104360962B true CN104360962B (zh) | 2015-10-28 |
Family
ID=52528226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410674170.8A Active CN104360962B (zh) | 2014-11-21 | 2014-11-21 | 匹配于高性能计算机结构的多级嵌套数据传输方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104360962B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10026142B2 (en) * | 2015-04-14 | 2018-07-17 | Intel Corporation | Supporting multi-level nesting of command buffers in graphics command streams at computing devices |
CN110246549B (zh) * | 2019-06-14 | 2021-04-20 | 湖南大学 | 多物理耦合应用处理方法、装置、计算机设备以及存储介质 |
CN111339000B (zh) * | 2020-02-24 | 2021-07-06 | 深圳震有科技股份有限公司 | Amp系统内存文件传输方法及装置 |
CN116128093B (zh) * | 2022-11-16 | 2024-02-02 | 河北省气象灾害防御和环境气象中心(河北省预警信息发布中心) | 一种融合机器学习和数值模拟的减排效果快速评估方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158936A (zh) * | 2007-11-21 | 2008-04-09 | 中国科学院计算技术研究所 | 一种节点之间的数据传输系统和装置及方法 |
CN101354694A (zh) * | 2007-07-26 | 2009-01-28 | 上海红神信息技术有限公司 | 基于mpu架构的超高扩展超级计算系统 |
CN102331923A (zh) * | 2011-10-13 | 2012-01-25 | 西安电子科技大学 | 一种基于多核多线程处理器的功能宏流水线实现方法 |
CN103019838A (zh) * | 2012-11-14 | 2013-04-03 | 清华大学 | 一种基于多dsp处理器平台的分布式实时多任务操作系统 |
-
2014
- 2014-11-21 CN CN201410674170.8A patent/CN104360962B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101354694A (zh) * | 2007-07-26 | 2009-01-28 | 上海红神信息技术有限公司 | 基于mpu架构的超高扩展超级计算系统 |
CN101158936A (zh) * | 2007-11-21 | 2008-04-09 | 中国科学院计算技术研究所 | 一种节点之间的数据传输系统和装置及方法 |
CN102331923A (zh) * | 2011-10-13 | 2012-01-25 | 西安电子科技大学 | 一种基于多核多线程处理器的功能宏流水线实现方法 |
CN103019838A (zh) * | 2012-11-14 | 2013-04-03 | 清华大学 | 一种基于多dsp处理器平台的分布式实时多任务操作系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104360962A (zh) | 2015-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104536937B (zh) | 基于cpu‑gpu异构集群的大数据一体机实现方法 | |
CN107077364B (zh) | 基于特定数据端口连接的识别使用图组件的自动聚类的基于图的程序规范的编译 | |
US9672065B2 (en) | Parallel simulation using multiple co-simulators | |
Zhang et al. | Enabling in-situ execution of coupled scientific workflow on multi-core platform | |
Dreher et al. | Decaf: Decoupled dataflows for in situ high-performance workflows | |
Aridhi et al. | A MapReduce-based approach for shortest path problem in large-scale networks | |
JP2017016693A (ja) | アプリケーションプログラムのためのクラスタコンピューティングのサポート | |
CN106687919B (zh) | 用于控制多个组件的执行的方法、系统和计算机可读介质 | |
Van Tendeloo et al. | PythonPDEVS: a distributed Parallel DEVS simulator | |
CN104360962B (zh) | 匹配于高性能计算机结构的多级嵌套数据传输方法与系统 | |
CN107633125B (zh) | 一种基于带权有向图的仿真系统并行性识别方法 | |
CN102708088A (zh) | 面向海量数据高性能计算的cpu/gpu协同处理方法 | |
Yoong et al. | IEC 61499 in a Nutshell | |
EP3000030A2 (en) | Methods and apparatus for iterative nonspecific distributed runtime architecture and its application to cloud intelligence | |
CN112085217A (zh) | 部署人工智能服务的方法、装置、设备及计算机介质 | |
Liu et al. | Hanayo: Harnessing wave-like pipeline parallelism for enhanced large model training efficiency | |
Yildiz et al. | Decaf: Decoupled dataflows for in situ workflows | |
CN111539685A (zh) | 基于私有云的船舶设计制造协同管理平台及方法 | |
CN105144107A (zh) | 用于运行可执行代码的方法、处理模块及系统 | |
CN115361382B (zh) | 基于数据群组的数据处理方法、装置、设备和存储介质 | |
Cieslik et al. | PaPy: Parallel and distributed data-processing pipelines in Python | |
CN104516735B (zh) | 实现云计算环境自动化运维的二维分层方法 | |
JP5920842B2 (ja) | シミュレーション装置、シミュレーション方法、およびプログラム | |
CN103324464B (zh) | 在并行计算机的计算节点处处理非预期消息的方法和装置 | |
KR20160070984A (ko) | 하둡 플랫폼을 이용한 전산유체역학의 시뮬레이션 장치 및 방법 |
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 |