首页> 中国专利> 一种基于异构众核的LBM并行优化方法

一种基于异构众核的LBM并行优化方法

摘要

本发明涉及一种基于异构众核的LBM并行优化方法,其包括以下步骤:步骤一,根据LBM并行运算特性对“神威·太湖之光”的单核组进行数据储存、循环运算、通信方式上进行优化;步骤二,在LDM上,采取双缓冲模式让LBM并行计算更加高效,同时采取了新的数据块格式;步骤三,在进程任务划分上,根据并行度和算法难易,采取二维划分策略,同时根据LBM并行运算特性进行了计算结构的优化。本发明使得“神威·太湖之光”的物理架构能够有更加适合LBM并行的数据通信方式和数据结构,同时通过合理的分配方案,进一步提高LBM方法的并行效率。

著录项

  • 公开/公告号CN113127200A

    专利类型发明专利

  • 公开/公告日2021-07-16

    原文格式PDF

  • 申请/专利权人 苏州流场信息技术有限公司;

    申请/专利号CN202110440081.7

  • 申请日2021-04-23

  • 分类号G06F9/50(20060101);G06F13/28(20060101);G06F9/38(20060101);G06F9/30(20060101);G06F30/28(20200101);

  • 代理机构

  • 代理人

  • 地址 215300 江苏省苏州市昆山开发区前进东路科技广场大楼405室67号工位(集群登记)

  • 入库时间 2023-06-19 11:52:33

说明书

技术领域

本发明涉及一种LBM并行优化方法,尤其是涉及一种基于异构众核的LBM并行优化方法。

背景技术

随着CFD应用到不同的领域,相应的物理过程和几何模型变得越来越复杂,计算的网格规模变得更大,这些对机器的计算能力、存储容量、网络带宽和计算资源提出了更高的挑战。LBM方法作为一种十分重要的计算流体力学方法,由于其是基于介观动力学,需要大量的计算资源。对于此问题展开了大量的并行计算研究。

目前已经有大量针对LBM方法的并行研究,有相应的科学应用。这些大多以GPU架构或者多核CPU结构为研究基础,然而现在仍然缺少针对“神威·太湖之光”异构众核的体系结构的LBM方法并行的研究。

目前,对于“神威·太湖之光”异构众核的体系结构的LBM并行计算,主要包括以下问题:

(1)LBM程序中,有着大量的计算变量,每次进行计算都要从不同区域获取变量,增加了数据读取的时间消耗。

(2)LBM并行计算过程中,数据之间的通信会带来时间的消耗,从而影响计算速度。

(3)并行计算过程中,从核的数据通信也是影响计算速度的一个关键点。

(4)多节点的并行优化

发明内容

本发明的目的在于对“神威·太湖之光”异构众核的体系结构的LBM并行计算进行优化,进而节省计算资源和计算时间,提出了一种基于异构众核的LBM并行优化方法。LBM程序并行流程包括串行部分的计算区域和物理模型的建立、计算任务的并行划分、初始物理参数的设计和边界条件的选择等等。并行部分包括碰撞过程和迁移过程的计算、边界部分的处理、宏观量的计算。对于一个特定物理问题的计算,首先需要进行相应的前处理步骤,计算区域大小的选择、物理模型位置的确定和选择合适的格子Boltzmann模型,根据格子Boltzmann模型,选择相应的控制方程。根据计算区域和物理模型生成基于笛卡尔坐标系的流场网格。然后,根据计算节点的个数进行计算任务的划分,使每个计算节点计算任务量达到负载均衡为目标。

应用该并行优化方法一方面可以使得“神威·太湖之光”的物理架构能够有更加适合LBM并行的数据通信方式和数据结构,同时通过合理的分配方案,进一步提高LBM方法的并行效率。

为达到上述目的,本发明的构思是:首先基于LBM并行运算的特性对“神威·太湖之光”的单个核组进行优化,“神威·太湖之光”处理器的特殊物理架构可以更好的利用主从核的资源。在数据储存的优化上,将数据储存格式改为数据结构体结构,按照格点信息类别分别储存;在循环运算上,对循环迭代过程进行展开、指令重排;在通信方式上,启动从核之间的寄存器通信;在LDM上,采取双缓冲模式让碰撞迁移计算过程更加高效。最后在进程任务划分上,综合了并行度和算法设计难度,采取了二维划分策略。

根据上述发明构思,本发明一种基于异构众核的LBM并行优化方法包括以下步骤:

步骤一,根据LBM并行运算特性对“神威·太湖之光”的单核组进行数据储存、循环运算、通信方式上进行优化;

步骤二,在LDM上,采取双缓冲模式让LBM并行计算更加高效,同时采取了新的数据块格式;

步骤三,在进程任务划分上,根据并行度和算法难易,采取二维划分策略,同时根据LBM并行运算特性进行了计算结构的优化。

优选地,所述步骤一包括:

步骤十一,优化后的数据存储格式,存储格式为数组结构体结构体(Structure ofArray)结构。按照格点信息类别分别存储格点的类型信息、格点的邻居信息和格点的分布函数(包括碰撞后和迁移后的分布函数),但是化后的格点碰撞过程仍然需要其18个邻居的分布函数信息,但是由于其所有邻居的分布函数存储在内存连续的区域,因此计算过程在读取过程没有过多消耗;

步骤十二,LBM并行程序中存在大量循环迭代计算,通过对这些循环迭代过程进行展开、指令重排能够提高对寄存器的利用效率,避免过多不必要的读写操作,提高程序的访存效率,加快程序的执行效率;

步骤十三,为了充分减少通信带来的时间消耗,启动从核之间的寄存器通信,该通信方式速度远超过直接访问主存方式。这个过程需要将64个计算核心的数据规约到0号核心。因为从核之间的寄存器通信只能进行行与行或者列与列之间的通信,为了加快该规约过程的速度,程序规约过程。首先,对于每一行,0、2、4、6号核心分别接收1、3、5、7号核心的结果。然后,0号和4号核心分别接收2、6号核心的结果。最后0号核心得到每行最终的结果。

优选地,所述步骤二的LDM优化,申威26010处理器中每个计算核心有64KB大小的LDM,从核可以通过DMA方式与主存进行数据通信,为了提高“申威26010”处理器的加速性能,降低从核间的通信开销是一个关键步骤。双缓冲模式是在需要多次DMA读写操作的碰撞迁移计算过程中,在从核的局部存储空间上申请大小为通信数据2倍的内存空间,用来存放两份同样大小且互为对方的缓冲数据。通过程序控制来实现双缓冲模式,除了第一次和最后一次的数据通信过程,每次从核进行计算的同时,进行下一次计算的读取(或存储)数据的通信。同时提出新的数据块格式,以适合双缓冲模式的数据块传递。

优选地,所述步骤三的进程任务划分,二维划分策略需要跟上下左右四个面交换面上的数据,跟右上、左上、左下和右下交换边的数据。这种策略能够保证并行度和通信复杂度都能得到均衡,为算法的可扩展性提供了很好的基础;计算结构上,计算核心阵列负责算法中碰撞与迁移部分的计算,这部分也是算法中计算最密集的部分,能够充分利用计算核心资源。

本发明的方法,与现有技术相比,具有以下突出的实质性特点和显著优点:

一、本发明根据LBM并行运算的特点,对神威太湖之光的数据储存改编为数组结构体结构大大减小了读取过程中时间的消耗,对于并行运算进行了展开和重排使得其效率更好,同时也优化了通信方式,大大减小了通信所带来的时间消耗。

二、本发明在充分研究了申威26010处理的LDM特点后,根据对并行运算的特性,优化了LDM,采取了双缓冲模式,每一次从核进行计算的同时,进行下一次计算的读取,大大降低了从核之间的通信开销,与此同时改进了数据块格式。

三、本发明在任务进程划分上采取了二维划分策略,这种划分保证了算法的并行性和扩展性,同时算法设计难度也降低了,计算结构上讲计算核心阵列负责LBM并行算法中的碰撞与迁移部分,优化了计算结构。

附图说明

图1为LBM并行算法流程图。

图2为优化后数据结构图。

图3为优化后迭代过程图

图4为寄存器通信优化图

图5为双缓冲模式下第i步的通信和计算的相互隐藏原理图

图6为算法数据存储结构图

图7为二维划分策略通信方式图

图8为计算结构图

图9为两个算法的通信和计算时间占比

具体实施方式

以下结合附图对本发明的优选实施例进一步详细说明。

如图1所示,LBM并行算法括串行部分的计算区域和物理模型的建立、计算任务的并行划分、初始物理参数的设计和边界条件的选择等等。并行部分包括碰撞过程和迁移过程的计算、边界部分的处理、宏观量的计算

对于一个特定物理问题的计算,首先需要进行相应的前处理步骤,计算区域大小的选择、物理模型位置的确定和选择合适的格子Boltzmann模型,根据格子Boltzmann模型,选择相应的控制方程。根据计算区域和物理模型生成基于笛卡尔坐标系的流场网格。然后,根据计算节点的个数进行计算任务的划分,使每个计算节点计算任务量达到负载均衡为目标。

在前处理处理结束后,确定流场内每个网格点相应的物理参数,雷诺数、初始速度方向和大小、初始密度和温度等,并计算网格点的平衡态分布函数。其次,根据控制方程,采用格子Boltzmann模型的碰撞迁移规则进行迭代计算,求解包括流场点和边界点的分布函数。最后,判断迭代过程是否结束。

本实施例是流场规模为3000*1000*8000共24亿网格,分别利用200个主核和200个核组(共13000核)。

步骤一,首先在计算之间,对神威·太湖之光”的单核组进行数据储存、循环运算、通信方式上进行优化,然后在进行200个主核和200个核组(共13000核)的LBM并行计算。

步骤十一,如图2所示在进行计算之前把数据储存格式进行优化,首先要确定所有格点的类型,然后确定所有格点的邻居信息,最后确定所有格点的分布函数,通过确定格点类型、邻居信息、分布函数,分别进行储存,这样可以减少性能的损失。

步骤十二,如图3所示把所有的迭代循环进行拆开,可以看见每次计算过程中执行更多的数据操作,减少了多次循环开销带来的影响。

步骤十三,如图4所示,首先,对于每一行,0、2、4、6号核心分别接收1、3、5、7号核心的结果。然后,0号和4号核心分别接收2、6号核心的结果。最后0号核心得到每行最终的结果。之后每列循环在行上的操作,最终0号核心可以得到64个核心的结果。

步骤二,如图5所示,在从核的局部存储空间上申请大小为通信数据2倍的内存空间,用来存放两份同样大小且互为对方的缓冲数据,可以看出在第一块内存进行计算过程的时候,第二块数据块进行通信过程,同时采取(2+2)*(2+2)*h大小的数据块区计算2*2*h大小的运算数据。这一改动可以使得计算每个格点数据所需要的格点数据可以由9个变成4.5个,DMA传输数据效率提高一倍。

步骤三,如图6中显示了算法的计算数据结构示意图,边界格点区域和内部格点区域是需要计算的格点,所有格点在计算时需要其周围邻居节点的信息,缓冲格点作为缓冲区从邻居进程接收数据,接收的数据为位于邻居进程的边界格点数据,边界格点需要缓冲数据接收完毕后进行计算,内部数据区不需要接收的数据直接进行计算。如图7中展示了二维划分策略的数据传递方法。二维划分策略需要跟上下左右四个面交换面上的数据,跟右上、左上、左下和右下交换边的数据。这种策略能够保证并行度和通信复杂度都能得到均衡,为算法的可扩展性提供了很好的基础。如图8所示,计算核心阵列负责算法中碰撞与迁移部分的计算,这部分也是算法中计算最密集的部分,能够充分利用计算核心资源。我们对算法进行了优化,计算核心进行碰撞迁移计算的同时,计算管理核心进行数据交换操作,即相邻进程的边界数据发送到其邻居的缓冲数据区。这种分配主核和从核进行不同的任务,能够把通信花费的时间隐藏在计算过程中,计算核心可以持续的进行计算,而不需要在一个时间步结束后进行等待。

本文将此方法和传统LBM并行算法进行对比,两个方法的通信和计算时间占比,如图9所示,首先,可以发现在众核结构中,通信时间相对于计算时间的比例较大,算法中通过主核通信和计算核心计算同时进行的方式能够明显的提高计算性能。其次,算法中通过利用计算核心的并行能力提高了算法68.5倍的计算效率。

本文结合说明书附图和具体实施例进行阐述只是用于帮助理解本发明的方法和核心思想。本发明所述的方法并不限于具体实施方式中所述的实施例,本领域技术人员依据本发明的方法和思想得出的其它实施方式,同样属于本发明的技术创新范围。本说明书内容不应理解为对本发明的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号