匹配于高性能计算机体系结构的非结构网格数据管理方法转让专利

申请号 : CN202010902143.7

文献号 : CN111813563B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 莫则尧刘青凯许竞劼杨章张爱清

申请人 : 北京应用物理与计算数学研究所

摘要 :

本文提供一种匹配于高性能计算机体系结构的非结构网格数据管理方法,方法包括:根据多物理耦合过程,确定非结构网格数据结构;将非结构网格数据结构映射到高性能计算机体系结构中;确定非结构网格数据结构的过程包括:构造由多种非结构网格单元组成的联邦层;对联邦层进行划分,得到邦员层和邦员层间邻接关系;对邦员层进行克隆,得到网格层和网格层间的邻接关系;对网格层进行逐层不重叠的剖分处理,得到逐层嵌套的剖分层及剖分层间的邻接关系;针对最后一次剖分得到的剖分层,对网格单元定义多物理耦合过程中的物理量。本文可以支持任意非结构网格单元类型与复杂拓扑结构,可大幅提升的数值计算效率。

权利要求 :

1.一种匹配于高性能计算机体系结构的非结构网格数据管理方法,其特征在于,包括:根据多物理耦合过程,确定非结构网格数据结构;

将所述非结构网格数据结构映射到高性能计算机体系结构中;

其中,确定所述非结构网格数据结构的过程包括:

根据多物理耦合过程并行计算的完整计算区域,构造由多种非结构网格单元组成的联邦层;

根据多物理耦合过程中单物理过程并行计算的计算区域对所述联邦层进行划分,得到多个邦员层和邦员层间的邻接关系;

对所述邦员层进行克隆,得到至少一个网格层和网格层间的邻接关系,网格层间的邻接关系包括同一邦员层内网格层间的邻接关系,以及不同邦员层内网格层间的邻接关系;

对所述网格层进行逐层不重叠的剖分处理,得到多个逐层嵌套的剖分层及剖分层间的邻接关系,包括:对所述网格层进行剖分处理,得到多个网格区和网格区间的邻接关系;其中,所述网格区间的邻接关系包括:同一网格层内网格区之间邻接关系,以及不同网格层内网格区之间邻接关系;

对所述网格区进行剖分处理,得到多个网格域和网格域间的邻接关系;其中,所述网格域间的邻接关系包括:同一网格区内网格域之间的邻接关系,以及不同网格区内网格域之间的邻接关系;

对所述网格域进行剖分处理,得到最后一次剖分所得的多个网格片和网格片间的邻接关系;其中,所述网格片间的邻接关系包括:同一网格域内网格片之间的邻接关系,以及不同网格域内网格片之间的邻接关系;

最后一次剖分得到的网格片,对网格片的网格单元定义所述多物理耦合过程中的物理量,网格片对应的物理量数据存储为数据片,所述数据片还用于存储所述网格片周围影像区中定义的物理量;

对网格单元定义物理量时,先根据网络单元定义网格实体,然后在网格实体上定义物理量;其中,网格实体包括网格单元中点、边、面、体、自定义实体;

上述各种邻接关系包括相交、相邻、分离、接触。

2.如权利要求1所述的管理方法,其特征在于,根据单物理过程能否采用相空间并行的数值计算方法,对所述单物理过程对应的邦员层进行克隆。

3.如权利要求2所述的管理方法,其特征在于,根据单物理过程能否采用相空间并行的数值计算方法,对所述单物理过程对应的邦员层进行克隆,包括:若所述单物理过程能采用相空间并行的数值计算方法,则对所述邦员层进行克隆,得到多个网格层;

若所述单物理过程不能采用相空间并行的数值计算方法,则将所述邦员层继承为网格层。

4.如权利要求1所述的管理方法,其特征在于,还包括:

根据所述非结构网格数据,进行所述多物理耦合过程的数值模拟;

根据预定物理时间或时间步数,交换各邦员层中网格单元的物理量。

5.如权利要求1所述的管理方法,其特征在于,所述高性能计算机体系结构包括:计算机系统、结点系统、处理器、处理器核心、向量部件中的线路及流水线,其中,所述结点系统又划分为结点组、结点子组及计算结点。

6.如权利要求5所述的管理方法,其特征在于,将所述非结构网格数据结构映射到高性能计算机体系结构中包括:将所述联邦层映射到计算机系统,所述邦员层的描述及邦员层间的邻接关系存储于计算机系统的内存空间中;

将每一邦员层映射到一结点组,所述网格层的描述及网格层间的邻接关系分布存储于结点组的内存空间中;

将每一网格层映射到一结点子组,所述网格区的描述及网格区间的邻接关系分布存储于结点子组的内存空间中;

将每一网格区被映射到一计算结点,所述网格域的描述及网格域间的邻接关系共享存储于计算结点的内存空间中;

将每一网格域映射到计算结点的一处理器,所述网格片的描述及网格片间的邻接关系共享存储于处理器的内存空间中;

将每一网格片及数据片映射到处理器的一组处理器核心;

将网格片内网格单元映射到处理器核心中向量部件的不同线路;

将网格单元中定义的物理量数据及其计算操作映射到所述向量部件中的一流水线,由流水线对所述物理量进行操作。

7.一种非结构网格数据结构的管理装置,其特征在于,包括:数据结构确定模块,用于根据多物理耦合过程,确定非结构网格数据结构;

映射模块,用于将所述非结构网格数据结构映射到高性能计算机体系结构中;

其中,所述数据结构确定模块确定所述非结构网格数据结构的过程包括:根据多物理耦合过程并行计算的完整计算区域,构造由多种非结构网格单元组成的联邦层;

根据多物理耦合过程中单物理过程并行计算的计算区域对所述联邦层进行划分,得到多个邦员层和邦员层间的邻接关系;

对所述邦员层进行克隆,得到至少一个网格层和网格层间的邻接关系,网格层间的邻接关系包括同一邦员层内网格层间的邻接关系,以及不同邦员层内网格层间的邻接关系;

对所述网格层进行逐层不重叠的剖分处理,得到多个逐层嵌套的剖分层及剖分层间的邻接关系,包括:对所述网格层进行剖分处理,得到多个网格区和网格区间的邻接关系;其中,所述网格区间的邻接关系包括:同一网格层内网格区之间邻接关系,以及不同网格层内网格区之间邻接关系;

对所述网格区进行剖分处理,得到多个网格域和网格域间的邻接关系;其中,所述网格域间的邻接关系包括:同一网格区内网格域之间的邻接关系,以及不同网格区内网格域之间的邻接关系;

对所述网格域进行剖分处理,得到最后一次剖分所得的多个网格片和网格片间的邻接关系;其中,所述网格片间的邻接关系包括:同一网格域内网格片之间的邻接关系,以及不同网格域内网格片之间的邻接关系;

最后一次剖分得到的网格片,对网格片的网格单元定义所述多物理耦合过程中的物理量,网格片对应的物理量数据存储为数据片,所述数据片还用于存储所述网格片周围影像区中定义的物理量;

对网格单元定义物理量时,先根据网络单元定义网格实体,然后在网格实体上定义物理量;其中,网格实体包括网格单元中点、边、面、体、自定义实体;

上述各种邻接关系包括相交、相邻、分离、接触。

8.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至6中任意一项的匹配于高性能计算机体系结构的非结构网格数据管理方法。

9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行计算机程序,所述计算机程序被处理器执行时实现上述权利要求1至6中任意一项的匹配于高性能计算机体系结构的非结构网格数据管理方法。

说明书 :

匹配于高性能计算机体系结构的非结构网格数据管理方法

技术领域

[0001] 本文涉及科学与工程计算领域,尤其涉及一种匹配于高性能计算机体系结构的非结构网格数据管理方法。

背景技术

[0002] 在科学与工程计算领域,非结构网格是计算区域的一类离散网格,可有效地支持复杂数值模拟。当前,高性能计算机体系结构日趋复杂,呈现“计算机-结点-处理器-核-向量部件-流水线六层嵌套并行”和“异构众核加速”的典型特征。为了充分适配体系结构,大幅提升基于非结构网格的并行计算效率,需要设计匹配于当前高性能计算机体系结构的非结构网格数据结构。
[0003] 传统地,数值模拟采用多维数组、树结构、森林结构作为非结构网格数据结构,采用数据剖分和分布存储技术来适应进程之间的并行,采用剖分后部分数据的共享存储技术来适应线程之间的并行,从而实现进程和线程的两层嵌套并行计算。然而,这些传统数据结构一方面不能适配“六层嵌套并行”,访存局部性较低,容易导致缓存(Cache)命中率下降,不利于挖掘CPU核内多功能部件的指令级并行度和向量加速功能,另一方面难以适应“异构众核加速”。
[0004] 现有技术中提出的结构网格数据管理方法,例如中国专利号为ZL201410769018.8的中国专利,仅能针对同构计算机系统进行结构网格数值模拟,不适用于非结构网格数值模拟和异构加速体系结构。

发明内容

[0005] 本文用于解决现有技术中的非结构化网格数据结构不适用于现有高性能计算机体系结构,存在访问局部性低、缓存命中率下降、不利于挖掘CPU核内多功能部件的指令级并行度和向量加速功能以及不能适应异构众核加速的问题。
[0006] 为了解决上述技术问题,本文第一方面提供一种匹配于高性能计算机体系结构的非结构网格数据管理方法,包括:
[0007] 根据多物理耦合过程,确定非结构网格数据结构;
[0008] 将所述非结构网格数据结构映射到高性能计算机体系结构中;
[0009] 其中,确定所述非结构网格数据结构的过程包括:
[0010] 根据多物理耦合过程并行计算的完整计算区域,构造由多种非结构网格单元组成的联邦层;
[0011] 根据多物理耦合过程中单物理过程并行计算的计算区域对所述联邦层进行划分,得到多个邦员层和邦员层间的邻接关系;
[0012] 对所述邦员层进行克隆,得到至少一个网格层和网格层间的邻接关系;
[0013] 对所述网格层进行逐层不重叠的剖分处理,得到多个逐层嵌套的剖分层及剖分层间的邻接关系;
[0014] 针对最后一次剖分得到的剖分层,对网格单元定义所述多物理耦合过程中的物理量。
[0015] 进一步实施中,根据单物理过程能否采用相空间并行的数值计算方法,对所述单物理过程对应的邦员层进行克隆。
[0016] 进一步实施例中,根据单物理过程能否采用相空间并行的数值计算方法,对所述单物理过程对应的邦员层进行克隆,包括:
[0017] 若所述单物理过程能采用相空间并行的数值计算方法,则对所述邦员层进行克隆,得到多个网格层;
[0018] 若所述单物理过程不能采用相空间并行的数值计算方法,则将所述邦员层继承为网格层。
[0019] 进一步实施例中,非结构网格数据结构的管理方法还包括:根据所述非结构网格数据,进行所述多物理耦合过程的数值模拟;根据预定物理时间或时间步数,交换各邦员层网格单元的物理量。
[0020] 进一步实施例中,对网格单元定义多物理耦合过程中的物理量包括:
[0021] 根据网格单元,定义网格实体;
[0022] 在网格实体上定义多物理耦合过程中的物理量。
[0023] 进一步实施例中,所述网格实体为网格单元中点、边、面、体、自定义实体中的一种或多种。
[0024] 进一步实施例中,对所述网格层进行逐层不重叠的剖分处理,得到多个逐层嵌套的剖分层及剖分层间的邻接关系,包括:
[0025] 对所述网格层进行剖分处理,得到多个网格区和网格区之间邻接关系;
[0026] 对所述网格区进行剖分处理,得到多个网格域和网格域之间邻接关系;
[0027] 对所述网格域进行剖分处理,得到最后一次剖分所得的多个网格片和网格片之间邻接关系。
[0028] 进一步实施例中,网格片对应的物理量数据存储为数据片,所述数据片还用于存储所述网格片周围影像区中定义的物理量。
[0029] 进一步实施例中,所述高性能计算机体系结构包括:计算机系统、结点系统、处理器、处理器核心、向量部件中的线路及流水线,其中,所述结点系统又划分为结点组、结点子组及计算结点。
[0030] 进一步实施例中,将所述非结构网格数据结构映射到高性能计算机体系结构中包括:
[0031] 将所述联邦层映射到计算机系统,所述邦员层的描述及邦员层间的邻接关系存储于计算机系统的内存空间中;
[0032] 将每一邦员层映射到一结点组,所述网格层的描述及网格层间的邻接关系分布存储于结点组的内存空间中;
[0033] 将每一网格层映射到一结点子组,所述网格区的描述及网格区间的邻接关系分布存储于结点子组的内存空间中;
[0034] 将每一网格区被映射到一计算结点,所述网格域的描述及网格域间的邻接关系共享存储于计算结点的内存空间中;
[0035] 将每一网格域映射到计算结点的一处理器,所述网格片的描述及网格片间的邻接关系共享存储于处理器的内存空间中;
[0036] 将每一网格片及数据片映射到处理器的一组处理器核心;
[0037] 将网格片内网格单元映射到处理器核心中向量部件的不同线路;
[0038] 将网格单元中定义的物理量数据及其计算操作映射到所述向量部件中的一流水线,由流水线对所述物理量进行操作。
[0039] 进一步实施例中,所述网格层间的邻接关系包括:同一邦员层内网格层之间的邻接关系,以及不同邦员层内网格层之间的邻接关系;
[0040] 所述网格区间的邻接关系包括:同一网格层内网格区之间邻接关系,以及不同网格层内网格区之间邻接关系;
[0041] 所述网格域间的邻接关系包括:同一网格区内网格域之间的邻接关系,以及不同网格区内网格域之间的邻接关系;
[0042] 所述网格片间的邻接关系包括:同一网格域内网格片之间的邻接关系,以及不同网格域内网格片之间的邻接关系。
[0043] 本文的第二方面提供一非结构网格数据结构的管理装置,包括:
[0044] 数据结构确定模块,用于根据多物理耦合过程,确定非结构网格数据结构;
[0045] 映射模块,用于将所述非结构网格数据结构映射到高性能计算机体系结构中;
[0046] 其中,所述数据结构确定模块确定所述非结构网格数据结构的过程包括:
[0047] 根据多物理耦合过程并行计算的完整计算区域,构造由多种非结构网格单元组成的联邦层;
[0048] 根据多物理耦合过程中单物理过程并行计算的计算区域对所述联邦层进行划分,得到多个邦员层和邦员层间的邻接关系;
[0049] 对所述邦员层进行克隆,得到至少一个网格层和网格层间的邻接关系;
[0050] 对所述网格层进行逐层不重叠的剖分处理,得到多个逐层嵌套的剖分层及剖分层间的邻接关系;
[0051] 针对最后一次剖分得到的剖分层,对网格单元定义所述多物理耦合过程中的物理量。
[0052] 本文的第三方面,还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一实施例所述的非结构网格数据结构的管理方法。
[0053] 本文的第四方面,还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的非结构网格数据结构的管理方法。
[0054] 本文面向高性能数值模拟,提出一种匹配于当前高性能计算机体系结构的多层嵌套非结构网格数据结构,支持任意非结构网格单元类型与复杂拓扑结构,通过丰富非结构网格单元与其上定义物理量,为各类数值方法提供丰富的数据表达方式,通过不同非结构网格粒度并行提升非结构网格与物理量的存储与访存局部性,可支持应用软件面向高性能计算机复杂体系结构展开浮点性能优化,大幅提升基于非结构网格的数值计算效率。
[0055] 为让本文的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。

附图说明

[0056] 为了更清楚地说明本文实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本文的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0057] 图1示出了本文实施例非结构网格数据结构的示意图;
[0058] 图2示出了本文实施例高性能计算机体系结构示意图;
[0059] 图3示出了本文实施例非结构网格数据结构与高性能计算机体系结构的映射关系图;
[0060] 图4示出了本文实施例联邦层的示意图;
[0061] 图5示出了本文实施例邦员层的示意图;
[0062] 图6示出了本文实施例网格层的示意图;
[0063] 图7示出了本文实施例网格区的示意图;
[0064] 图8示出了本文实施例网格域的示意图;
[0065] 图9示出了本文实施例非结构网格数据结构的管理方法的流程图;
[0066] 图10A至图10C示出了二维网格单元组成的非结构网格结构示意图;
[0067] 图10D至图10F示出了三维网格单元组成的非结构网格结构示意图;
[0068] 图11示出了本文实施例非结构网格数据结构的管理方法的另一流程图;
[0069] 图12A至图12C示出了本文实施例的数据片的示意图;
[0070] 图13示出了本文实施例非结构网格数据结构管理装置的结构图;
[0071] 图14A及图14B分别示出了本文一具体实施例的模拟效果的示意图。
[0072] 附图符号说明:
[0073] 100、非结构网格数据结构;
[0074] 110、联邦层;
[0075] 120、邦员层;
[0076] 130、网格层;
[0077] 140、剖分层;
[0078] 141、网格区;
[0079] 142、网格域;
[0080] 143、网格片;
[0081] 150、网格单元;
[0082] 200、高性能计算机体系结构;
[0083] 210、计算机系统;
[0084] 220、结点系统;
[0085] 221、结点组;
[0086] 222、结点子组;
[0087] 223、计算结点;
[0088] 230、处理器;
[0089] 240、处理器核心;
[0090] 250、线路;
[0091] 260、流水线;
[0092] 1310、数据结构确定模块;
[0093] 1320、映射模块。

具体实施方式

[0094] 下面将结合本文实施例中的附图,对本文实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本文一部分实施例,而不是全部的实施例。基于本文中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文保护的范围。
[0095] 本文一实施例中,提供一种非结构网格数据结构,如图1所示,用于解决现有技术中的非结构化网格数据结构不适用于现有高性能计算机体系结构,存在访问局部性低、缓存命中率下降、不利于挖掘CPU核内多功能部件的指令级并行度和向量加速功能以及不能适应异构众核加速(即每个结点配置图形加速微处理器GPU或众核协处理器MIC,在提升浮点计算速度的同时降低功耗)的问题。
[0096] 具体的,非结构网格数据结构100映射到高性能计算机体系结构200(如图2所示)中,非结构网格数据结构100包括:联邦层110、邦员层120、网格层130、多个逐层嵌套的剖分层140、网格单元150及各同层间的邻接关系,其中,剖分层140可根据计算结点体系结构进行划分。一些实施方式中,剖分层140包括:网格区141、网格域142及网格片143。高性能计算机体系结构200包括:计算机系统210、结点系统220、处理器230、处理器核心240、向量部件中的线路250及流水线260,其中,结点系统220又划分为结点组221、结点子组222及计算结点223,计算结点223的体系结构包括:处理器230、处理器核心240、线路250、流水线260。
[0097] 本文通过联邦层的设置,能够充分考虑多物理耦合应用场景,例如热扩散、光辐射、电磁波传递、结构力学、流体力学等多物理耦合过程,便于实现各种物理过程的分别独立求解与耦合信息交换。通过邦员层的设置,可实现利用不同并行计算方法的结合使用来处理多物理过程耦合的问题,能够大幅提高并行计算效率。并行计算方法包括:相空间并行的数值计算方法及区域分解的数值计算方法,其中,相空间并行的数值计算方法例如为并行的蒙特卡洛方法,对不同相空间采用不同随机数种子来实现并行计算,适用于辐射类物理过程的计算,辐射物理过程例如为中子辐射、质子辐射、流体力学等等。区域分解的数值计算方法例如为并行的有限元方法、有限差分方法等,通过区域划分来实现并行计算,适用于结构力学、电磁波传递过程的计算。
[0098] (1)联邦层110代表多个物理耦合过程并行计算的整体计算区域,如图4所示,联邦层110由整体计算区域通过网格离散得到的全部网格单元150组成,包括F个邦员层120,用于管理邦员层间的邻接关系,其中,F为不小于1的正整数。
[0099] 多物理耦合过程为本文利用非结构网格数据结构模拟的过程,本案对多物理耦合过程具体不做限定,例如为核电站反应堆芯模拟、飞行器过载强度分析等等。以核电站反应堆芯模拟为例,核电站反应堆芯模拟可以作为一联邦层,该模拟过程可被划分为三个单物理过程“中子输运计算”、“燃耗计算”和“热工水力计算”,这三个单物理过程可分别作为三个邦员层。
[0100] 联邦层110是最粗粒度的数据存储,被映射到计算机系统210(如图3所示),邦员层的描述及邦员层间的邻接关系存储于计算机系统的内存空间中。
[0101] 其中,邦员层的描述指的是对邦员层包含的所有网格单元及邦员层所在计算区域的概括,可通过邦员层编号及特征属性值来表示。
[0102] 邦员层间的邻接关系是高效建立邦员层120间数据通信的基础,共F(F-1)/2个,可由邦员层邻接图的形式表现,邦员层邻接图包含任意两个邦员层F_i和F_j的邻接关系,邻接关系包括但不限于相交、相邻、分离、接触等。
[0103] (2)邦员层120代表单个物理过程的并行计算区域,可以与联邦层计算区域相同,也可以是部分计算区域的子区域,邦员层120计算区域大小由具体单个物理过程而定,本文对此不作限定。邦员层120由该计算区域通过网格离散得到的全部网格单元150组成。邦员层120包括K个网格层130(如图5所示),用于管理网格层间的邻接关系,其中,K为不小于1的正整数。
[0104] 邦员层120的粒度细于联邦层110,每一邦员层120被映射到一结点组221(如图3所示),结点组包含多个计算结点,不同邦员层所映射到的结点组所包含的计算结点可以相同,也可以不同,还可以共享部分计算结点。网格层的描述及网格层间的邻接关系分布存储于结点组221的内存空间中。
[0105] 其中,网格层的描述指的是对网格层包含的所有网格单元及网格层所在计算区域的概括,可通过网格层编号及特征属性值来表示。
[0106] 网格层间的邻接关系是高效建立网格层间数据通信的基础,可由网格层邻接图的形式表现,网格层邻接图包含同一邦员层内网格层之间的邻接关系,以及不同邦员层内网格层之间的邻接关系,其中,邻接关系包括但不限于相交、相邻、分离、接触等。
[0107] 一些实施方式中,邦员层120划分成的网格层完全相同,其中一网格层为属主网格层,其余网格层为克隆网格层。通过该种划分方式,能够提高处理效率。
[0108] 具体实施时,可根据单物理过程能否采用相空间并行的数值计算方法,对所述单物理过程对应的邦员层进行克隆,具体的,若单物理过程能采用相空间并行的数值计算方法,则对邦员层进行克隆,得到多个网格层;若单物理过程不能采用相空间并行的数值计算方法,则将邦员层继承为网格层。
[0109] 单物理过程能否采用相空间并行的数值计算方法可根据单物理过程中物理量之间的耦合关系确定,具体的,若存在多个可解耦计算的物理量,则能够采用相空间并行的数值计算方法。
[0110] (3)网格层130代表单个物理过程分解并行计算的计算区域,与其对应的邦员层的计算区域相同,由该计算区域通过网格离散得到的全部网格单元150组成。网格层130包括N个拓扑连通的网格区141(由网格层130不重叠的剖分而成,如图6所示),用于管理网格区间的邻接关系,其中,N为不小于1的正整数。
[0111] 网格层130的粒度细于邦员层120,每一网格层130被映射到一结点子组222(如图3所示),不同结点子组所包含的计算结点互不相同,全部结点子组所包含的计算结点构成结点组。网格区的描述及网格区间的邻接关系分布存储于结点子组222的内存空间中。
[0112] 其中,网格区的描述指的是对网格区包含的所有网格单元及网格区所在计算区域的概括,可通过网格区编号及特征属性值来表示。
[0113] 网格区间的邻接关系是高效建立网格区间数据通信的基础,可由网格区邻接图的形式表现,网格区邻接图包含同一网格层内网格区之间邻接关系,以及不同网格层内网格区之间邻接关系,其中,邻接关系包括但不限于相交、相邻、分离、接触等。
[0114] (4)网格区141代表其所在网格层130的部分计算区域,由该计算区域通过网格离散得到的网格单元150组成。网格区141包括M个拓扑连通的网格域142(由网格区141不重叠的剖分而成,如图7所示),用于管理网格域间的邻接关系,其中,M为不小于1的正整数。
[0115] 网格区141的粒度细于网格层130,每一网格区被映射到一计算结点223(如图3所示),网格层的不同网格区映射到不同的计算结点。网格域的描述及网格域间的邻接关系共享存储于计算结点的内存空间中。
[0116] 其中,网格域的描述指的是对网格域包含的所有网格单元及网格域所在计算区域的概括,可通过网格域编号及特征属性值来表示。
[0117] 网格域之间邻接关系是高效建立网格域之间数据通信的基础,可由网格域邻接图的形式表现,网格域邻接图包含同一网格区下不同网格域之间的邻接关系,以及不同网格区下不同网格域之间的邻接关系。
[0118] (5)网格域142代表其所在网格区141的部分计算区域,由该计算区域通过网格离散得到的网格单元150组成。网格域142包括P个拓扑连通的网格片143(由所述网格域142不重叠剖分而成,如图8所示),用于管理网格片间的邻接关系(如全等、相交、相邻、接触、附属、包含等),其中,P为不小于1的正整数。
[0119] 网格域142的粒度细于网格区141,每一网格域被映射到计算结点的一处理器230(如图3所示),具体的,处理器230可以是一同构的多核CPU,也可以是一异构加速器,还可以是一异构的多核/众核CPU,同一网格区的不同网格域映射到同一计算结点的不同处理器。网格片的描述及网格片间的邻接关系共享存储于处理器的内存空间中。
[0120] 其中,网格片的描述指的是对网格片包含的所有网格单元及网格片所在计算区域的概括,可通过网格片编号及特征属性值来表示。
[0121] 网格片之间邻接关系是高效建立网格片之间数据通信的基础,可由网格片邻接图的形式表现,网格片邻接图包含同一网格域下不同网格片之间的邻接关系,以及不同网格域下不同网格片之间的邻接关系。
[0122] (6)网格片143为所述最后一次剖分所得的剖分层,代表所述网格域的部分计算区域,由该计算区域通过网格离散得到的全部网格单元150组成,由所述网格域不重叠剖分而成,包括所在区域的全部网格单元,用于管理网格单元间的邻接关系(如全等、相交、相邻、接触、附属、包含等)。
[0123] 网格片143粒度细于网格域,如图3所示,每一网格片143被唯一映射到处理器的一组处理器核心,网格片143中相关的计算操作在该组处理器核心中完成,网格域142的不同网格片143映射至一处理器,可以是不同的处理器核心,也可以相同的处理器核心。网格片143内网格单元150被映射到处理器核心240中向量部件的不同线路250,在同一时刻不同线路并发地对不同网格单元150进行计算,网格单元中定义的物理量数据及物理量数据的计算操作(例如加法、减法等等)被映射到所述向量部件中的一流水线260,由流水线对所述物理量进行操作,实现指令级并行。
[0124] 网格单元间的连接关系为物理量的查找提供高效的检索手段,可由网格单元邻接图的形式表现,网格单元邻接图包含网格片内网格单元与其它网格单元(可以为本网格片内的单元,也可以为其他网格片内的单元)之间的拓扑邻接关系。
[0125] (7)网格单元代表一个不能再细分的计算区域,是非结构网格中的最小几何单元,网格单元上定义有数据场中的物理量。具体实施时,可在网格单元中点、边、面、体、自定义实体中的一个或多个定义物理量,或先在网格单元上的点、边、面、体、自定义实体中的一个或多个定义网格实体,然后在网格实体上定义物理量。其中,自定义实体可以指在网格单元中定义的任一确定位置,例如为网格单元的几何重心、数值积分点等等,也可以不指定确定位置,例如网格单元中存在多种组分,本文对此不作限定。
[0126] 网格单元的种类可根据物理过程特征与数值计算方法而定,网格单元的数量可根据数值模拟所需的精度而定。网格单元的种类,例如可以为任意形状的三角形、四边形、凸多边形、四面体、六面体等等。本文对网格单元具体种类与数量不做限定。
[0127] 一些实施方式中,按网格片对网格实体上定义的物理量进行存储,具体的,可将其存储于数据片中,数据片用于存储网格片中物理量的相关信息,相关信息包括但不限于:网格单元与结点位置信息、物理量数据、属性标记数据等。进一步的,所述数据片还用于存储所述网格片周围影像区中物理量的相关信息。
[0128] 本文提出的非结构网格数据结构,可与当前高性能计算机体系结构相适应,将非结构网格按“联邦层-邦员层-网格层-网格区-网格域-网格片-网格单元”划分为七层嵌套结构体系结构,通过该七层嵌套体系结构感知映射到当代高性能计算机“计算机-结点-处理器-核-向量部件中的线路-向量部件中的流水线”六层嵌套体系结构。
[0129] 本文提供的非结构网格数据结构,能够使得高性能数值模拟的数据分布和访问的局部性与高性能计算机系统的通信和访存的局域性相匹配,使得高性能数值模拟的多级嵌套并行度与高性能计算机系统的多层嵌套并发度相匹配,从而显著非结构网格数值模拟的计算效率。另外,本文通过将非结构网格数据结构划分为多层,且通过记录各层之间的嵌套关系及同层间的邻接关系,能够支持大部分区域不动的情况下,局部调整部分区域的几何与拓扑形态,以实现网格随物理过程变化的需求,例如平移、弯曲、甚至是破坏性的单元分离、分裂、增减,例如子弹射击平板导致平板破洞甚至整体破裂。再者,本文利用非结构网格数据结构模拟多物理耦合过程的计算区域,具有容易划分区域、拓扑灵活性高的特点。
[0130] 本文一实施例中,如图9所示,还提供一种非结构网格数据结构的管理方法,包括:
[0131] 步骤900,根据多物理耦合过程,确定非结构网格数据结构。
[0132] 步骤1000,将所述非结构网格数据结构映射到高性能计算机体系结构中。
[0133] 一些实施方式中,上述步骤900确定非结构网格数据结构的过程包括:
[0134] 步骤910,根据多物理耦合过程并行计算的完整计算区域,构造由多种非结构网格单元组成的联邦层。
[0135] 详细的说,多物理耦合过程所需的非结构网格可根据实际模拟对象进行确定,本文所需网格的具体类型不做限定,例如为三角形、四边形、多边形、多面体等网格结构。
[0136] 完整计算区域由F个可重叠的子计算区域组成,其中完整计算区域包含了多物理耦合过程发生的全部区域,每个子计算区域F_i包含第i个子物理过程发生的全部区域。本文中,为了分别表示物理过程,剖分每个子计算区域的非结构网格互不相关,非结构网格可以选用二维或三维的形式,如图10A至图10F所示,本文对此不作限定。在每层子计算区域的网格中,网格单元具有唯一的逻辑编号。
[0137] 步骤920,根据多物理耦合过程中单物理过程并行计算的计算区域对所述联邦层进行划分,得到多个邦员层和邦员层间邻接关系。
[0138] 多物理耦合过程中的单物理过程可由人工分析得到,或由计算机按照预定规则进行识别,以核电站反应堆芯的多物理耦合过程为例,其对应的单物理过程包括:“中子输运计算”、“燃耗计算”和“热工水力计算”,相应的划分成的邦员层包括三个,第一个邦员层对应中子输运计算,第二个邦员层对应燃耗计算,第三个邦员层对应热工水力计算。
[0139] 步骤930,根据单物理过程能否采用相空间并行的数值计算方法,对所述单物理过程对应的邦员层进行克隆,得到K个网格层和网格层间的邻接关系。
[0140] 具体实施时,根据单物理过程能否采用相空间并行的数值计算方法,对所述单物理过程对应的邦员层进行克隆,包括:
[0141] 若所述单物理过程能采用相空间并行的数值计算方法,则对所述邦员层进行克隆,得到多个网格层。若所述单物理过程不能采用相空间并行的数值计算方法,则将所述邦员层继承为网格层。
[0142] 以核电站反应堆芯模拟为例,三个邦员层分别对应“中子输运计算”、“燃耗计算”和“热工水力计算”的物理过程,“中子输运计算”存在解耦计算的物理量,因此,第一个邦员层能采用相空间并行的数值计算方法(例如采用蒙特卡罗方法),可以克隆得到一个属主网格层与多个克隆网格层,“燃耗计算”和“热工水力计算”不存在解耦计算的物理量,因此,第二与第三个邦员层不能采用相空间并行的数值计算方法,将邦员层继承为一属主网格层,采用区域分解并行计算。
[0143] 步骤940,对所述网格层进行逐层不重叠的剖分处理,得到多个逐层嵌套的剖分层及剖分层间的邻接关系。具体的,步骤940包括:
[0144] 步骤941,对所述网格层进行剖分处理,得到N个网格区和网格区之间邻接关系。
[0145] 具体实施时,为满足相空间并行需求,同一邦员层的各网格层的剖分方式相同,网格区之间邻接关系记录了网格层内部每一个网格区与其他网格区之间的邻接关系,其中其他网格区可以位于同一网格层中,也可以位于与本网格层邻接或相关的其他网格层中。
[0146] 步骤942,对所述网格区进行剖分处理,得到M个网格域和网格域之间邻接关系。
[0147] 具体实施时,为满足相空间并行需求,克隆网格层中网格区的剖分方式与属主网格层中相应网格区剖分方式一致,网格域之间邻接关系记录了网格区内部每一个网格域与其他网格域之间的邻接关系,其中其他网格域可以位于同一网格区中,也可以位于与本网格区相关的其他网格区中。
[0148] 步骤943,对所述网格域进行剖分处理,得到最后一次剖分所得的P个网格片和网格片之间邻接关系。
[0149] 在每一个克隆网格层中,为满足相空间并行需求,网格域剖分方式与属主网格层中相应的网格域一致,剖分为P个互不重叠的网格片。网格片之间邻接关系记录了内部每一个网格片与其他网格片之间的邻接关系,其中其他网格片可以位于同一网格域中,也可以位于与本网格域相关的其他网格域中。
[0150] 步骤950,针对最后一次剖分得到的剖分层,即针对网格片,对网格单元定义所述多物理耦合过程中的物理量,并将网个片对应的物理量数据存储为数据片。
[0151] 网格单元间邻接关系记录有网格单元中定义物理量的点、边、面、自定义实体等位置之间的关系。
[0152] 在网格单元上定义物理量的过程包括:在网格单元上定义网格实体,在网格实体上定义物理量,仍以核电站反应堆芯模拟为例,物理量包括“温度”、“密度”、“粒子通量”、“粒子位置”、“粒子运动方向”,网格实体包括“单元”(确定温度、密度)、“面”(确定粒子通量)、“粒子”(确定粒子位置、运动方向)。
[0153] 一些实施方式中,高性能计算机体系结构包括:计算机系统、结点系统、处理器、处理器核心、向量部件中的线路及流水线,其中,所述结点系统又划分为结点组、结点子组及计算结点。上述步骤1000将所述非结构网格数据结构映射到高性能计算机体系结构中包括:
[0154] 步骤1010,将所述联邦层映射到计算机系统,所述邦员层的描述及邦员层间的邻接关系存储于计算机系统的内存空间中。
[0155] 步骤1020,将每一邦员层映射到一结点组,所述网格层的描述及网格层间的邻接关系分布存储于结点组的内存空间中。
[0156] 步骤1030,将每一网格层映射到一结点子组,所述网格区的描述及网格区间的邻接关系分布存储于结点子组的内存空间中。
[0157] 步骤1040,将每一网格区被映射到一计算结点,所述网格域的描述及网格域间的邻接关系共享存储于计算结点的内存空间中。
[0158] 步骤1050,将每一网格域映射到计算结点的一处理器,所述网格片的描述及网格片间的邻接关系共享存储于处理器的内存空间中。
[0159] 步骤1060,将每一网格片及数据片映射到处理器的一组处理器核心。
[0160] 步骤1070,将网格片内网格单元映射到处理器核心中向量部件的不同线路。
[0161] 将网格单元中定义的物理量数据及其计算操作映射到所述向量部件中的一流水线,由流水线对所述物理量进行操作。
[0162] 本文一实施例中,如图11所示,非结构网格数据结构的管理方法还包括:
[0163] 步骤1100,根据所述非结构网格数据,进行所述多物理耦合过程的数值模拟,根据预定物理时间或时间步数,交换各邦员层网格单元的物理量。其中,预定时间步数例如为100时间步,本文对其具体值不做限定。
[0164] 本文一实施例中,考虑到网格单元中物理量的计算会需要用到周围其他邻接网格单元上的物理量数据,数据片除了包括本地网格片定义的物理量外,还需包括本地网格片周围影像区中同种物理量的相关信息,即本地网格片周围其他网格片中定义的物理量,周围影像区根据其包含的网格单元层数进行划分及命名,如图12A至图12C所示所示,给出了0层-2层的体点影像区示意图。在图12A中,表示无影像区情况下的数据片分布情况,数据片与网格片完全重叠,不同网格片上的数据片互不相交。图12B表示了带一层影像区的数据片,其中区域X仍表示原网格片,而在之上定义的数据片比网格片多了一层影像区Y,即包含了网格片周围相邻的一层网格单元,影像区与周围的网格片产生重叠。而图12C中间的区域X周围额外增加了第二层影像区Y,影像区包含了两层外围的相邻网格单元。
[0165] 本文提供的非结构网格数据结构的管理方法将任意非结构网格及其物理量数据场分解为“联邦层-邦员层-网格层-网格区-网格域-网格片-网格单元”七层嵌套管理结构,并将其分层映射到当代高性能计算机“计算机-结点-处理器-核-向量部件中线路-流水线”六层嵌套体系结构。通过这样的分解和映射,使得非结构网格及其物理量的数据存储和访问的局部性显著提升,从而使能非结构网格框架和应用的性能优化,提升非结构网格数值模拟计算效率。
[0166] 基于同一发明构思,本文还提供一种非结构网格数据结构的管理装置,如下面的实施例所述。由于非结构网格数据结构的管理装置解决问题的原理与非结构网格数据结构的管理方法相似,因此非结构网格数据结构的管理装置的实施可以参见非结构网格数据结构的管理方法,重复之处不再赘述。如图13所示,非结构网格数据结构的管理装置包括:
[0167] 数据结构确定模块1310,用于根据多物理耦合过程,确定非结构网格数据结构;
[0168] 映射模块1320,用于将所述非结构网格数据结构映射到高性能计算机体系结构中;
[0169] 其中,所述数据结构确定模块1310确定所述非结构网格数据结构的过程包括:
[0170] 根据多物理耦合过程并行计算的完整计算区域,构造由多种非结构网格单元组成的联邦层;
[0171] 根据多物理耦合过程中单物理过程并行计算的计算区域对所述联邦层进行划分,得到多个邦员层和邦员层间邻接关系;
[0172] 根据单物理过程能否采用相空间并行的数值计算方法,对所述邦员层进行克隆,得到至少一个网格层和网格层间的邻接关系;
[0173] 对所述网格层进行逐层不重叠的剖分处理,得到多个逐层嵌套的剖分层及剖分层间的邻接关系,其中,对网格层进行逐层不重叠的剖分处理包括:
[0174] 对网格层进行剖分处理,得到N个网格区及网格区之间邻接关系;
[0175] 对网格区进行剖分处理,得到M个网格域及网格域之间邻接关系;
[0176] 对网格域进行剖分处理,得到最后一次剖分所得的P个网格片及网格片之间邻接关系。
[0177] 针对最后一次剖分得到的剖分层,即数据片,对网格单元定义所述多物理耦合过程中的物理量,并将该剖分层对应的物理量数据存储为数据片。
[0178] 本文提出一种匹配于当前高性能计算机体系结构的七层嵌套非结构网格数据结构的管理装置,支持任意非结构网格单元类型与复杂拓扑结构,通过丰富网格实体类型定义与其上定义物理量,为各类数值方法提供丰富的数据表达方式,通过不同非结构网格粒度并行提升非结构网格与物理量的存储与访存局部性,可支持应用软件面向高性能计算机复杂体系结构展开浮点性能优化,大幅提升基于非结构网格的数值计算效率。
[0179] 以飞行器再入强度分析为例,该算例使用的非结构网格是飞行器的贴体网格,模拟物理量包含过载加速度、位移约束、飞行器受力等,在超级计算机上使用204800个处理器核依然可获得34.7%的强扩展并行效率和52.1%的弱扩展并行效率,如图14A及图14B所示,横坐标为处理器核心数量。其中强弱扩展并行效率的计算方法分别为:固定总计算量或者固定每个处理器核计算量的情况下,对于不同处理器核数的效率测试。例如,204800个处理器核的强扩展并行效率=12800处理器核计算的总时间/204800处理器核计算的总时间*16,204800个处理器核的弱扩展并行效率=384处理器核计算的总时间/204800处理器核计算的总时间。
[0180] 本文一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行前述任一实施例所述的非结构网格数据结构的管理方法。
[0181] 本文一实施例中,还提供一种计算机可读指令,其中当处理器执行所述指令时,其中的程序使得处理器执行前述任一实施例所述的非结构网格数据结构的管理方法。
[0182] 本文一实施例中,还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一实施例所述的非结构网格数据结构的管理方法。
[0183] 应理解,在本文的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本文实施例的实施过程构成任何限定。
[0184] 还应理解,在本文实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0185] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本文的范围。
[0186] 所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0187] 在本文所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
[0188] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网格单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本文实施例方案的目的。
[0189] 另外,在本文各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0190] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本文的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本文各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0191] 本文中应用了具体实施例对本文的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本文的方法及其核心思想;同时,对于本领域的一般技术人员,依据本文的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本文的限制。