一种并行多层快速多极子树结构复合存储方法技术

技术编号:21476935 阅读:27 留言:0更新日期:2019-06-29 04:39
本发明专利技术公开了一种并行多层快速多极子树结构复合存储方法,该方法将多层快速多极子树结构的存储方式分为复合存储层和其他层两类,按盒子并行层的次高层至最底层为复合存储层,采取本地存储树与非本地代理树的复合存储模式:多极子树结构分布式离散存储在各个进程,形成本地存储树;本地存储盒子计算远相互作用过程中所需用到的本层非本地节点顺序压缩存储,形成非本地代理存储树,使用时通过二分查找快速寻址,在其他层,所有进程上完整保存各层多极子树结构,多极子相邻作用盒子对信息填充完毕后,非本地代理树高度压缩去除冗余,仅在多层快速多极子最底层保留,以进一步减小峰值内存,提高节点寻址效率。

【技术实现步骤摘要】
一种并行多层快速多极子树结构复合存储方法
本专利技术属于计算电磁学究领域,具体涉及一种并行多层快速多极子树结构复合存储方法。
技术介绍
多层快速多极子技术是计算电磁学领域的一种高效快速算法,可以用来加速矩量法最终满阵方程的迭代求解可以采用多层快速多极子技术加速。多层快速多极子技术将目标划分为多层的盒子,以分组分层的方式,通过聚集、转移、发散实现矩阵-矢量乘。借助于高效的并行计算技术,可以将矩量法的计算规模扩展到上百亿未知量、上万波长。在多层快速多极子技术中,首先形成一包围目标的最小立方体盒子,之后,此立方体盒子在空间三个维度上等分,形成八个子盒。此过程递归进行,直到最低层盒子尺寸小于一给定值。此盒子划分过程形成以初始立方体盒子为根节点的八叉树结构。在多层快速多极子的重要过程中,如远作用插值时父、子盒关系,转移过程中次相邻盒子的查找等,都需要通过此八叉树节点遍历、查找实现。通常在多层快速多极子分布式并行实现过程中,采取在每个MPI进程上保存完整多极子树的方式存储。对于表面积分方程,因未知数离散限制在目标表面上,除初始较高几层外,基本上各层盒子数目,也即树节点树近似以4倍率递增。在最底层Lmax层,盒子数目比未知数约小10倍。据此估计,百亿未知数时,最细层盒子数约10亿。并行多层快速多极子中,为方便计算,一个树节点(Node)通常需要三个变量,存储该盒子莫顿码的长整形变量lKey,该盒子的子盒数短整型变量lNum,该节点在本层中存储位置偏移量长整形变量lFrt,考虑编译器结构对齐,共24个字节,完整存储多极子树结构所需内存大于30G。百亿未知数规模时,通常需要采用数千MPI进程以满足内存需求,若仍然按照所有进程上都存储完整多极子树结构的方式,则单只树结构的存储就达数十TB内存。然若树结构完全离散存储,在插值、转移、聚集等多层快速多极子操作时,非本地存储的树结构信息需要通信获取,必然导致大量额外通信,极不效率。综上,百亿规模电超大目标的多层快速多极子树结构存储已成为分布式并行计算瓶颈,迫切需要开发新的技术来实现并行多层快速多极子树结构的高效存储。
技术实现思路
有鉴于此,本专利技术提供了一种并行多层快速多极子树结构复合存储方法,能够便捷、高效地实现并行多层快速多极子树结构的复合存储。实现本专利技术的技术方案如下:一种并行多层快速多极子树结构复合存储方法,包括以下步骤:步骤一、读取目标网格的总棱边数,根据预先设定的MPI进程总数,将棱边均分到所有MPI进程;步骤二、根据每个MPI进程分到的棱边,生成多层快速多极子的分层树结构;步骤三、对分层树结构中的每个盒子采用莫顿码编号,各层盒子按照莫顿码顺序存储;步骤四、根据每个棱边中点坐标,确定其在空间三个方向上从属归一化划分值,确定每个棱边所对应的最底层盒子编码;步骤五、根据各层盒子尺寸、平面波采样点数、总进程数以及拟采用的并行方案,确定按盒子并行层的起始层数Lb,则复合存储层的起始层LD的层数为Lb+1;步骤六、从最底层盒子开始各进程都发送本地第一组同父盒的子盒莫顿码至其前一进程,按照此操作自下而上逐层进行直至复合存储层的最高层;从复合存储层的上一层开始,所有进程间通信,收集所有本层盒子的莫顿码,按照此操作自下而上逐层进行直至多层树的最高层;上述过程确定了各层盒子的非空盒子,进而得到多层快速多极子非空盒子的八叉树结构;步骤七、根据步骤六所得的八叉树结构,自复合存储层的最高层LD开始向下遍历,经相邻进程间点对点通信,将LD层离散的各盒子及其所有后代盒子保存到同一进程上;步骤八、根据步骤六所得的八叉树结构确定按盒子并行层最高层的所有盒子在各进程的离散情况,将按盒子并行层最高层的每个盒子及对应的所有后代盒子都保存到相同进程上;步骤九、根据步骤八所得的盒子离散情况,在复合存储层的相邻进程之间发送与离散盒子所对应的棱边信息;步骤十、自多极子树结构的第一层开始,建立各盒子的近相互作用队列,并通过近相互作用队列,建立下一层盒子的次相邻队列直至按盒子并行的最高层的上一层;在按盒子并行层的最高层,找出所有与本地盒子近相互作用的非本地盒子编号序列,根据次相邻作用定义,按盒子并行层的最高层的所有后代节点的次相邻、近相互作用盒子信息都将包含在按盒子并行层的最高层本地盒子的近相互作用队列中,命名此队列为冗余代理树;步骤十一、从多极子树结构的第一层至按盒子并行的最高层,逐层遍历每一层的所有树节点得到近相互作用盒子对列表;从复合存储层LD至Lmax层,若所需访问节点为本地树即可直接进行访问,若所需访问节点非本地,则需对冗余代理树对应层所有节点,以二分查找方式进行快速查找寻址;步骤十二、删除冗余代理树中Lmax-1至LD层的非本地节点信息,根据Lmax层本地盒子的近相互作用列表,从冗余代理树中提取对应非本地节点信息,生成非本地代理树。有益效果:(1)本专利技术在按盒子并行层的次高层至底层采取本地存储树与非本地代理树的复合存储模式,可以显著降低多极子树结构存储需求。根据多极子盒子的4倍递增特性,仅只离散3层便可以实现多极子树结构的约98%节点分布式存储,因此可以显著减小程序计算过程,特别是大规模高性能并行时的峰值内存。(2)本专利技术在复合存储层上,除本地离散存储树外,还构建并存储了与本地盒子次相邻作用盒子集合的非本地代理树。在完成多层快速多极子远相互作用队列填充后,非本地代理树经压缩去除冗余,除最底层继续保留用于近相互作用外,其余各层被释放删除。非本地代理树的规模远小于本地存储树,可通过二分查找快速遍历,计算过程中对多极子树的遍历时间几乎没有影响。除有限几层按盒子并行层为复合分布式存储外,在其他层(按平面波并行或等级结构并行层,取决于所用并行方案)仍然在所有进程上完整存储多极子树结构,因此在计算时间方面可保持与原所有进程完整存储多极子树结构相当。(3)复合存储层本地离散存储树与非本地代理树的填充可高效并行进行,在填充过程中仅需少量的局部点对点通信,填充时间相比整个程序执行时间几乎可以忽略。填充过程中所需中间数组不会超过整个并行多层快速多极子技术计算过程峰值内存,且在完成填充后立即释放,因此复合存储结构生成过程快速高效且不会导致整个并行程序内存需求的增加。附图说明图1复合存储技术中多极子分层处理示意图。图2进程间点对点通信示意图。图3多极子各层盒子存储与层内编号示意图。图4辅助树填充层向下遍历梳理过程示意图。图5多层快速多极子技术次相邻与近相互作用示意图。图6代理树节点统计示意图。图7B-2轰炸机模型几何结构示意图。图8半径1200波长金属球VV极化双站RCS与解析解对比示意图。图9B-2飞机模型在32GHz频率下VV极化双站RCS。具体实施方式下面结合附图并举实施例,对本专利技术进行详细描述。本专利技术提供了一种便捷、高效的并行多层快速多极子树结构复合存储方法。该方法将多层快速多极子树结构的存储方式分为复合存储层和其他层两类。复合存储层,通常为按盒子并行层的次高层至多极子树底层,采取本地存储树与非本地代理树的复合存储模式:多极子树结构分布式离散存储在各个进程,形成本地存储树;本地存储盒子远相互作用盒子对填充过程中所需用到的本层非本地节点顺序压缩存储,形成非本地代理冗余存储树,待多极子次相邻盒子对填充完毕后,非本地代本文档来自技高网
...

【技术保护点】
1.一种并行多层快速多极子树结构复合存储方法,其特征在于,包括以下步骤:步骤一、读取目标网格的总棱边数,根据预先设定的MPI进程总数,将棱边均分到所有MPI进程;步骤二、根据每个MPI进程分到的棱边,生成多层快速多极子的分层树结构;步骤三、对分层树结构中的每个盒子采用莫顿码编号,各层盒子按照莫顿码顺序存储;步骤四、根据每个棱边中点坐标,确定其在空间三个方向上从属归一化划分值,确定每个棱边所对应的最底层盒子编码;步骤五、根据各层盒子尺寸、平面波采样点数、总进程数以及拟采用的并行方案,确定按盒子并行层的起始层数Lb,则复合存储层的起始层LD的层数为Lb+1;步骤六、从最底层盒子开始各进程都发送本地第一组同父盒的子盒莫顿码至其前一进程,按照此操作自下而上逐层进行直至复合存储层的最高层;从复合存储层的上一层开始,所有进程间通信,收集所有本层盒子的莫顿码,按照此操作自下而上逐层进行直至多层树的最高层;上述过程确定了各层盒子的非空盒子,进而得到多层快速多极子非空盒子的八叉树结构;步骤七、根据步骤六所得的八叉树结构,自复合存储层的最高层LD开始向下遍历,经相邻进程间点对点通信,将LD层离散的各盒子及其所有后代盒子保存到同一进程上;步骤八、根据步骤六所得的八叉树结构确定按盒子并行层最高层的所有盒子在各进程的离散情况,将按盒子并行层最高层的每个盒子及对应的所有后代盒子都保存到相同进程上;步骤九、根据步骤八所得的盒子离散情况,在复合存储层的相邻进程之间发送与离散盒子所对应的棱边信息;步骤十、自多极子树结构的第一层开始,建立各盒子的近相互作用队列,并通过近相互作用队列,建立下一层盒子的次相邻队列直至按盒子并行的最高层的上一层;在按盒子并行层的最高层,找出所有与本地盒子近相互作用的非本地盒子编号序列,根据次相邻作用定义,按盒子并行层的最高层的所有后代节点的次相邻、近相互作用盒子信息都将包含在按盒子并行层的最高层本地盒子的近相互作用队列中,命名此队列为冗余代理树;步骤十一、从多极子树结构的第一层至按盒子并行的最高层,逐层遍历每一层的所有树节点得到近相互作用盒子对列表;从复合存储层LD至Lmax层,若所需访问节点为本地树即可直接进行访问,若所需访问节点非本地,则需对冗余代理树对应层所有节点,以二分查找方式进行快速查找寻址;步骤十二、删除冗余代理树中Lmax‑1至LD层的非本地节点信息,根据Lmax层本地盒子的近相互作用列表,从冗余代理树中提取对应非本地节点信息,生成非本地代理树。...

【技术特征摘要】
1.一种并行多层快速多极子树结构复合存储方法,其特征在于,包括以下步骤:步骤一、读取目标网格的总棱边数,根据预先设定的MPI进程总数,将棱边均分到所有MPI进程;步骤二、根据每个MPI进程分到的棱边,生成多层快速多极子的分层树结构;步骤三、对分层树结构中的每个盒子采用莫顿码编号,各层盒子按照莫顿码顺序存储;步骤四、根据每个棱边中点坐标,确定其在空间三个方向上从属归一化划分值,确定每个棱边所对应的最底层盒子编码;步骤五、根据各层盒子尺寸、平面波采样点数、总进程数以及拟采用的并行方案,确定按盒子并行层的起始层数Lb,则复合存储层的起始层LD的层数为Lb+1;步骤六、从最底层盒子开始各进程都发送本地第一组同父盒的子盒莫顿码至其前一进程,按照此操作自下而上逐层进行直至复合存储层的最高层;从复合存储层的上一层开始,所有进程间通信,收集所有本层盒子的莫顿码,按照此操作自下而上逐层进行直至多层树的最高层;上述过程确定了各层盒子的非空盒子,进而得到多层快速多极子非空盒子的八叉树结构;步骤七、根据步骤六所得的八叉树结构,自复合存储层的最高层LD开始向下遍历,经相邻进程间点对点通信,将LD层离散的各盒子及其所有后代盒子保存到同一进程上;步骤八、根据...

【专利技术属性】
技术研发人员:杨明林柳瑞青郭琨毅盛新庆
申请(专利权)人:北京理工大学
类型:发明
国别省市:北京,11

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

1