异构众核处理器的任意带状线性方程组两级分区两次缩聚并行计算的方法及系统与流程

文档序号:18900668发布日期:2019-10-18 21:53阅读:172来源:国知局
异构众核处理器的任意带状线性方程组两级分区两次缩聚并行计算的方法及系统与流程

本发明涉及一种并行任意带状线性方程组并行求解的技术领域,具体是一种面向国产sw26010异构众核处理器的任意带状线性方程组两级分区两次缩聚并行计算方法及系统。



背景技术:

随着科学研究和工程技术的不断发展,出现了诸如跨江隧道、高速列车、摩天大厦等大型和超大型的复杂工程系统。这些系统不但自由度高,而且还含有非线性和复杂的边界条件等多种因素,因而需借助高性能计算完成其大规模有限元模型分析。高性能计算已成为继理论研究、科学实验之后的第三大科学手段,并且发挥的作用越来越重要。而高性能计算的重要组成部分为大规模任意带状线性方程组的并行求解,其并行效率依赖于高性能并行计算机的研究和开发相应的并行算法。

在高性能并行计算机方面,近年来,主流高性能并行计算机系统越来越多地采用异构众核架构,即通用处理器搭载众核加速设备,共同完成计算任务,如:amd公司的apu项目、nvidia公司牵头的echolen项目、intel公司牵头的runnemede项目、我国的“神威太湖之光”项目等,其典型特征是:位于同一核组内的不同处理器之间通过局部总线相连,通信速率很高;而位于不同核组之间的处理器通过高性能网络相连,通信速率相对较低。神威太湖之光”采用sw26010异构众核处理器,其峰值性能、持续性能、性能功耗比3项关键指标居于世界第一,相比计算能力,其访存能力偏弱,给大规模任意带状线性方程组并行求解的高效实现带来了巨大的挑战。如何利用sw26010异构众核处理器的结构特点开发出与之对应的任意带状线性方程组并行算法成为提高其求解并行效率的关键。

经对现有技术文献的检索发现,在任意带状线性方程组并行求解算法方面,主要分为两类:一类是将任意带状线性方程组看作普通稀疏矩阵或稠密矩阵,借由其并行求解方法进行求解,如:直接法和迭代法;另一类是从对角线性方程组自身的并行性出发,借助“分而治之”的策略进行并行求解。采用直接法和迭代法对任意带状线性方程组进行求解时,无法发挥对角线性方程组自身的并行性优势,故而导致进程间通信和同步开销的增加,致使任意带状线性方程组求解的并行效率极大地降低。采用“区域分解”的策略对任意带状线性方程组进行求解时,可充分发挥其自身的并行性优势,与直接法和迭代法相比,具有更高的并行效率。然而,目前有关对角线性方程组基于“区域分解”策略的并行求解方法研究内容主要为:三对角线性方程组和五对角线性方程组的并行求解,国内外尚无任意带状线性方程组并行求解的相关研究。



技术实现要素:

针对现有技术中的缺陷,本发明的目的是提供一种异构众核处理器的任意带状线性方程组两级分区两次缩聚并行计算的方法及系统。

根据本发明提供的一种异构众核处理器的任意带状线性方程组两级分区两次缩聚并行计算的方法,包括如下步骤:

s1,经分区软件将任意带状线性方程组数据剖分为n个初始子区域,并将每个初始子区域的方程组系数和方程右端项单独保存于一个文件中,其中n为单个核组的整数倍;

s2,各核组主核并行读取所述初始子区域的系统方程数据,并将各初始子区域的系统方程数据传递给相应的从核,各核组从核同步单独形成每个初始子区域的系统方程,经缩聚消去每个初始子区域内部变量,得到仅与边界变量相关的各初始子区域的界面方程;

s3,各核组主核通过组集位于同一核组内的所有底层初始子区域界面方程形成各顶层组装子区域的系统方程,经缩聚消去每个组装子区域的内部变量,得到仅与边界变量相关的各顶层组装子区域的界面方程;

s4,各核组主核通过相互通信利用并行算法求解组装子区域的界面方程,得到各组装子区域边界变量后,同时回代求解每个组装子区域内部变量;

s5,各核组主核将包括内部变量、边界变量和系统方程数据在内的顶层组装子区域的结果发送给位于同一核组内的底层各初始子区域,底层各初始子区域从接收结果中提取自身边界变量值,再回代求解内部变量;若迭代结束则输出结果,否则重新从第二步开始执行。

一些实施方式中,所述步骤s1中,每个所述初始子区域内的n阶方程按p个区域平均分配,余数q依次附加到前q个区域上,则每个区域占有的方程组阶数为:

一些实施方式中,所述步骤s3中,所述顶层组装子区域是把位于同一核组内的所有底层初始子区域组装在一起,并只保留初始子区域边界变量信息生成的新子区域。

一些实施方式中,所述步骤s4中,所述并行算法为并行superlu算法,并行superlu算法并行求解时各组装子区域的等效系数矩阵和等效方程右端项仍分布式存储在各核组主核上,中间计算结果也以矩阵和向量积的形式分布式存储在各核组主核上,从核仅用于计算。

一些实施方式中,所述步骤s4中,所述相互通信包括局部通信和全局通信,所述局部通信只存在于各核组主核与从核之间,所述全局通信用于部分点积操作和整体矩阵分解的计算。

一些实施方式中,所述步骤s2-s5任一步骤中的所述界面方程其左端项均为凝聚得到的子区域等效方程系数矩阵,其右端项均为凝聚得到的子区域等效方程右端项向量。

一些实施方式中,所述步骤s2-s5任一步骤中的所述内部变量是指仅从属于一个子区域独有的变量,且和子区域内部方程系数相关的变量,所述的子区域为初始子区域或组装子区域。

一些实施方式中,所述步骤s2-s5任一步骤中的边界变量是指从属于两个或多个子区域的变量,且和子区域边界方程系数相关的变量,所述的子区域为初始子区域或组装子区域。

一些实施方式中,所述边界变量与边界方程带宽的关系为2*(l+m),其中,l为对角线下的半带宽,m为对角线上的半带宽,且满足条件l≤m。

一种异构众核处理器的任意带状线性方程组两级分区两次缩聚并行计算系统,采用所述的异构众核处理器的任意带状线性方程组两级分区两次缩聚并行计算的方法,包括:

初始子区域生成模块:通过分区软件将任意带状线性方程组数据剖分为n个初始子区域,并将每个初始子区域的方程组系数和方程右端项单独保存于一个文件中,其中n为单个核组的整数倍;

初始子区域界面方程获取模块:通过各核组主核并行读取所述初始子区域的系统方程数据,并将各初始子区域的系统方程数据传递给相应的从核,各核组从核同步单独形成每个初始子区域的系统方程,经缩聚消去每个初始子区域内部变量,得到仅与边界变量相关的各初始子区域的界面方程;

组装子区域界面方程获取模块:各核组主核通过组集位于同一核组内的所有底层初始子区域界面方程形成各顶层组装子区域的系统方程,经缩聚消去每个组装子区域的内部变量,得到仅与边界变量相关的各顶层组装子区域的界面方程;

并行求解模块:各核组主核通过相互通信利用并行superlu算法求解组装子区域的界面方程,得到各组装子区域边界变量后,同时回代求解每个组装子区域内部变量;

迭代结果输出模块:每个核组内的主核将包括内部变量、边界变量和系统方程数据在内的顶层组装子区域的结果发送给位于同一核组内的底层各初始子区域,底层各初始子区域从接收结果中提取自身边界变量值,再回代求解内部变量;若迭代结束则输出结果,否则继续迭代。

与现有技术相比,本发明具有如下的有益效果:

1、无论初始子区域还是组装子区域的数据信息均可通过多文件流的方式存储在相应的各个核组主核上,各核组所属从核可同步访问主核数据进行计算,从而利用sw26010异构众核处理器的结构特点降低访存数据量并提高计算效率。

2、两级分区两次缩聚并行方法在一级子区域的基础上通过二次缩聚进一步降低了界面方程的阶数,有利于减小界面方程求解时的全局通信。

3、由于组装和回代求解过程均在同一核组内进行,可将大量局部通信集中在各核组内部,充分发挥sw26010异构众核处理器核组内通信速率较高的优势。

4、位于同一核组内的所有底层初始子区域经组装后,每个核组只生成一个顶层组装子区域,这样每个核组就只有一个主核参与全局通信求解最终生成的界面方程,从而尽可能减少了不同核组之间的全局通信。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明的计算流程图;

图2为本发明实施例中的任意带状线性方程组示意图;

图3为本发明实施例中的三对角线性方程组两级分区构造示意图;

图4为本发明实施例中的任意带状线性方程组剖分示意图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

实施例1

本发明以国产sw26010异构众核处理器为例,在实现分布式数据存储的基础上,通过两级分区两级缩聚实现分层通信,进而最大限度地实现局部化通信,可充分利用国产sw26010异构众核处理器结构特点提升大规模任意带状线性方程组并行计算效率。

面向国产sw26010异构众核处理器的任意带状线性方程组两级分区两次缩聚并行计算方法,包括如下步骤:

第一步,经分区软件将任意带状线性方程组数据剖分为n个初始子区域,并将每个初始子区域的方程组系数和方程右端项单独保存在一个文件中,其中n为单个核组的整数倍;

所述初始子区域是指经分区软件对任意带状线性方程组直接剖分得到的所有子区域,每个所述初始子区域内的n阶方程按p个区域平均分配,余数q依次附加到前q个区域上,则每个区域占有的方程组阶数为:

第二步,进行并行计算的各核组主核并行读取所属初始子区域系统方程数据,并将各初始子区域系统方程数据传递给相应的从核,然后各核组从核同步单独形成每个初始子区域的系统方程,并经过缩聚消去每个初始子区域内部变量,得到仅与边界变量相关的各初始子区域的界面方程;

第三步,每个核组内的主核通过组集位于同一核组内的所有底层初始子区域界面方程形成各顶层组装子区域系统方程,再经过缩聚消去每个组装子区域内部变量,得到仅与边界变量相关的各顶层组装子区域的界面方程;

所述顶层组装子区域是指把位于同核组内的所有底层初始子区域组装在一起,并只保留初始子区域边界变量信息生成的新子区域。顶层组装子区域仅由底层初始子区域的边界变量组成,其系统方程通过组集位于同核组内的所有初始子区域的界面方程形成。

第四步,各核组内的主核通过相互通信利用并行superlu算法求解组装子区域界面方程,得到各组装子区域边界变量后,同时回代求解其内部变量;

所述并行superlu算法并行求解时各组装子区域的等效系数矩阵和等效方程右端项仍分布式存储在各个核组主核上,中间计算结果也以矩阵和向量积的形式分布式存储在主核上,各从核只参与计算;局部通信只存在于各核组主核与从核之间,只有少量的点积操作和整体矩阵分解的计算需要全局通信。

第五步,每个核组内的主核将包括内部变量、边界变量和系统方程数据在内的所求顶层组装子区域的结果发送给位于同一核组内的底层各初始子区域,底层各初始子区域从接收结果中提取自身边界变量值,再回代求解内部变量;

若迭代结束则输出结果,否则重新从第二步开始执行,输出的结果包括初始子区域与组装子区域的内部变量以及边界变量。

上述步骤中,所述内部变量是指和子区域内部方程系数相关的变量,仅从属于一个子区域独有的变量称为子区域的内部变量;边界变量是指和子区域边界方程系数相关的变量,同时从属于两个或多个子区域的变量称为子区域的边界变量。

所述界面方程是指子区域通过缩聚消去内部变量后得到的仅与边界变量相关的方程,所述界面方程左端项为凝聚得到的子区域等效方程系数矩阵,右端项为凝聚得到的子区域等效方程右端项向量。

上述中的子区域所指代初始子区域或组装子区域。

具体过程阐述如下:

如图1所示,一种面向国产sw26010异构众核处理器的任意带状线性方程组两级分区两次缩聚并行计算方法流程图:

首先,经分区软件将任意带状线性方程组剖分为n个初始子区域,并将每个初始子区域的方程系数和右端项信息单独保存在一个文件中;

其次,各核组主核同时并行读取初始子区域文件信息形成每个初始子区域的系统方程,并将各初始子区域系统方程数据传递给相应的从核;

然后各核组从核同步单独形成每个初始子区域的系统方程,并经过缩聚消去每个初始子区域内部变量,得到仅与边界变量相关的各初始子区域的界面方程;

再次,各核组主核通过组集初始子区域界面方程形成各组装子区域系统方程,再进行缩聚消去内部变量;

然后,利用并行superlu算法求解组装子区域界面方程,然后回代求解其内部变量;

最后,将所求结果包括组装子区域内部变量、边界变量和系统方程数据发送给底层初始子区域,各初始子区域从接收结果中提取自身边界变量,再回代求解内部变量。

本实例中考虑带宽为l+m的n阶带状方程组,l为对角线下的半带宽,m为对角线上的半带宽,且满足条件l≤m。对于任意对角带状线性方程组对角线以下在带宽l~m之间的数据进行补0操作,最终形成如图2所示的任意带状线性方程组。并行计算的硬件条件为:启动p/64台核组机,每个核组机内具有65个处理器内核,包含1个主核和64个从核,核组机间通过高性能网络互联,主核与从核之间通过dma方式批量访问主存,假定测试时使用的每个核组的从核数量为r,则p=n/r×64。

下面按照系统求解的先后顺序依次作详细介绍:

第一步,利用分区软件将图2中的n阶方阵平均剖分为4个初始子区域,并将每个初始子区域的系数矩阵、方程右端项信息单独保存在一个文件中。如图3所示剖分生成的4个初始子区域分别为:初始子区域0,初始子区域1,初始子区域2,初始子区域3。

第二步,将各核组内的4个从核分别编号为:从核0、从核1、从核2和从核3,然后如图3所示将编号为0到3的4个初始子区域分别分配到与其编号相同的4个从核处理器内核上单独处理。从核0、从核1从属于主核0,从核2、从核3从属于主核1。各核组机主核同时并行读取相应初始子区域文件信息,然后将读取的各子区域数据传递至对应的所属从核,各从核采用高斯消元法对子区域系数矩阵进行分解实现缩聚过程以消去其内部变量,得到仅与边界变量相关的各初始子区域的界面方程。每个子区域,其系统方程可以按照图4所示虚线划分构成块状矩阵,m,n分别为该区域的起始行、终止行,如式(1)所示:

{ai,j},i=1,…5;j=1,…5(1)

对于每个子区域,其对应的缩减方程为:

式中,fi和fii为等效方程右端项,可根据下式进行计算:

其中,a为块状矩阵,包含方程的数据块,是按照图4进行划分,为5*5矩阵,其中每个元素为一个矩阵。

第三步,如图3所示组装子区域的处理器任务分配为:主核0负责组装子区域0的组装和处理,主核1负责组装子区域1的组装和处理。具体组装和处理过程如下:

主核0将位于其核组内的初始子区域0和初始子区域1组装在一起,并根据初始子区域0和初始子区域1的界面方程形成组装子区域0的系统方程,然后通过高斯消元法法实现缩聚过程以消去其内部变量,得到仅与边界变量相关的组装子区域0的界面方程。

主核1将位于其核组内的初始子区域2和初始子区域3组装在一起,并根据初始子区域2和初始子区域3的界面方程形成组装子区域1的系统方程,然后通过高斯消元法法实现缩聚过程以消去其内部变量,得到仅与边界变量相关的组装子区域1的界面方程。

第四步,主核0和主核1通过相互通信利用并行superlu算法联立求解组装子区域0和组装子区域1组成的界面方程,得到组装子区域0和组装子区域1的边界变量后分别回代求解其内部变量;

第五步,主核0将组装子区域0所求结果包括其内部变量和边界变量发送给对应核组内的初始子区域0和初始子区域1,初始子区域0和初始子区域1分别从接收结果中提取自身边界变量值,然后回代求解其内部变量;主核1将组装子区域1所求结果包括其内部变量和边界变量值发送给其核组内的初始子区域2和初始子区域3,初始子区域2和初始子区域3分别从接收结果中提取自身边界变量值,然后回代求解其内部变量。

实施例2

如图1-4所示,一种异构众核处理器的任意带状线性方程组两级分区两次缩聚并行计算系统,采用实施例1所述的异构众核处理器的任意带状线性方程组两级分区两次缩聚并行计算的方法,包括:

初始子区域生成模块:通过分区软件将任意带状线性方程组数据剖分为n个初始子区域,并将每个初始子区域的方程组系数和方程右端项单独保存于一个文件中,其中n为单个核组的整数倍;

初始子区域界面方程获取模块:通过各核组主核并行读取所述初始子区域的系统方程数据,并将各初始子区域的系统方程数据传递给相应的从核,各核组从核同步单独形成每个初始子区域的系统方程,经缩聚消去每个初始子区域内部变量,得到仅与边界变量相关的各初始子区域的界面方程;

组装子区域界面方程获取模块:各核组主核通过组集位于同一核组内的所有底层初始子区域界面方程形成各顶层组装子区域的系统方程,经缩聚消去每个组装子区域的内部变量,得到仅与边界变量相关的各顶层组装子区域的界面方程;

并行求解模块:各核组主核通过相互通信利用并行superlu算法求解组装子区域的界面方程,得到各组装子区域边界变量后,同时回代求解每个组装子区域内部变量;

迭代结果输出模块:每个核组内的主核将包括内部变量、边界变量和系统方程数据在内的顶层组装子区域的结果发送给位于同一核组内的底层各初始子区域,底层各初始子区域从接收结果中提取自身边界变量值,再回代求解内部变量;若迭代结束则输出结果,否则重新从第二步开始执行,其输出的结果包括初始子区域与组装子区域的内部变量以及边界变量。

本实施例2中的相关模块内涉及的相应运算规律、方法及其原理在实施例1中已进行了相应的阐述,在此不再赘述。

本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1