一种基于超级计算机的流体机械仿真程序优化方法技术

技术编号:19778766 阅读:26 留言:0更新日期:2018-12-15 11:28
本发明专利技术公开了一种基于超级计算机的流体机械仿真程序优化方法,针对神威·太湖之光超算体系结构与其编程特点,结合流体机械仿真程序特性,提出了一套系统可行的优化方案,其依次包括了分块众核并行优化、DMA传输优化、数据布局优化、双缓冲优化、SIMD向量化优化、寄存器通信优化。该方法为针对神威·太湖之光超算平台开发、移植或优化流体机械仿真程序的开发人员提供了一种通用的优化方法,实现对神威·太湖之光计算资源的充分利用,提升程序计算性能,缩短仿真花费时间。

【技术实现步骤摘要】
一种基于超级计算机的流体机械仿真程序优化方法
本专利技术属于计算流体力学与计算机交叉领域,特别涉及一种基于超级计算机的流体机械仿真程序优化方法。
技术介绍
神威·太湖之光超级计算机是由国家并行计算机工程技术研究中心自主研发,现安装在国家超级计算无锡中心的超级计算机,峰值性能为125.4PFlops,从2016年6月20日至2017年11月31日连续5次获得全球超级计算机500强(TOP500)榜单第一名。其基于申威SW26010处理器构建,共包含40960块SW26010处理器,每个处理器包含4个核组,每个核组包含1个MPE(ManagementProcessingElement,简称主核)和64个CPEs(ComputingProcessingElements,简称从核),从核分布在8×8的阵列中。其中主核上的编译器支持C,C++和Fortran3种编程语言,而从核上的编译器只支持C与Fortran两种编程语言。编译器的不兼容问题使得传统流体机械仿真程序无法直接在从核上运行,无法有效利用神威太湖之光强大的计算能力。计算流体力学(ComputationalFluidDynamics,CFD)是一个借助数值计算和计算机科学来求解流体力学的控制方程,模拟客观世界中流体的真实流动,对流体力学问题进行实验分析,介于数学、流体力学和计算机科学之间的交叉学科,在航空、航天、船舶、流体机械等有着重要的应用。作为一个仿真程序,它依据流体流动的基本定律,利用计算机的高速计算能力,刻画流体在空间中的真实流动规律,具有计算密集、控制逻辑复杂、数据量大、大量非线性偏微分方程组求解、仿真花费时间过长等特点。如何结合神威·太湖之光体系架构与编程特点使流体机械仿真程序充分发挥神威·太湖之光超算平台及其SW26010处理器强大的计算能力一直是高性能研究的主要挑战之一,该优化方法的提出对流体机械仿真程序在国产高性能计算平台高效应用有一定的指导意义。
技术实现思路
本专利技术的目的在于提供一种基于超级计算机的流体机械仿真程序优化方法,以解决上述问题。为实现上述目的,本专利技术采用以下技术方案:一种基于超级计算机的流体机械仿真程序优化方法,包括以下步骤:步骤1,利用超级计算机神威·太湖之光超算平台gprof对流体机械仿真程序算法进行剖分,寻找程序算法中符合神威·太湖之光体系结构加速的计算密集型算法部分,并将该部分算法改写为针对神威·太湖之光编程平台的算法;步骤2,对完成步骤1的流体机械仿真程序中计算密集型部分进行分块众核并行优化,根据基于空间限制、传输效率限制、映射限制、数据量限制四个条件限制的分块规则,将数据根据跨步读取规则与映射规则分发至MPE从核阵列进行计算;步骤3,对完成步骤2的分块众核并行优化进行DMA传输优化:依据步骤2中从核所需的数据,使用DMA-intrinsic接口编写DMA传输控制程序;步骤4,对完成步骤3的程序进行数据布局优化,对流体机械仿真程序核心段程序进行变量依赖关系分析,将数据进行拼接或整合;步骤5,对完成步骤4的程序进行双缓冲优化,将通信与计算重合;步骤6,对完成步骤5的程序使用神威·太湖之光的向量化部件进行SIMD向量化优化;步骤7,对完成步骤6的程序进行寄存器通信优化,同时对程序进行性能分析和代码整理分析,若分析结果低于程序预期性能,或程序经过迭代修改后在设计上有进一步提升的空间,则重复进行步骤1至7,若结果满足预期性能且程序设计,则基于神威·太湖之光体系结构的流体机械仿真程序优化结束。进一步的,在步骤1中,神威·太湖之光体系结构为基于SW26010处理器构建的超算平台,共包含40960块SW26010处理器,每个处理器包含4个核组,每个核组包含1个MPE和64个CPEs,从核分布在8×8的阵列中;神威·太湖之光体系结构的算法为利用SW26010MPE与CPEs计算能力的流体机械算法;基于神威·太湖之光编程平台指神威·太湖之光的编程特点:MPE主核的编译器支持C,C++和Fortran3种编程语言,使用时需要引入“athread.h”头文件,CPEs从核上的编译器只支持C与Fortran两种编程语言,使用时需要引入“slave.h”头文件。进一步的,在步骤2中,分块众核并行优化包括三个部分:1)基于空间限制、传输效率、映射限制、数据量限制四个条件的分块规则,空间限制指可配置为LDM(LocalDataMemory,局部数据存储器)的从核SPM(ScratchPadMemory,便笺式存储器)空间只有64KB,即LDMsize≤60KB;传输效率限制指当传输数据主存地址为128B对界,且传输量为128B倍数的时候达到DMA传输的峰值性能,即在保证主存地址对界的前提下保证Blocksize%128==0;映射限制与数据量限制指每次传输的数据量必须保证一次流体机械计算的全部完成;基于数据量限制的从核分配方法如下所示,避免从核无效的满负荷运行,有效降低系统能耗:其中,DataBlock表示数据块的总数,core_number表示所需从核数量,core_numberx表示所有可能的数量取值且core_numberx≤64。分块规则如以下公式表示,其中Totalsize表示所需传递的所有数据,Slave_number表示所有计算核的核心数目,Block表示所需分块的总块数:2)主存跨步读写规则:跨步的长度为:Stride=Boundarysize×8Byte,其中Stride表示跨步的长度,Boundarysize表示流体机械仿真程序中三维数组中边界数据层数;每次读写的数据量为其中Carrysize表示每次读写的数据量,Valid_Datasize表示数组内部有效数据的大小,Block表示分块的总块数;3)从核循环展开的映射规则:在每次从主存向LDM传输数据的时候需要将主存地址映射成为访存映射,使用循环展开的分法,使同一时间步内执行连续的数据块,如以下公式所示,其中Bias表示主存地址的偏移量,Blockindex表示当前数据块的索引,Threadindex表示当前计算从核的线程号;Bias=Blockindex×64+Threadindex。进一步的,在步骤3中,DMA传输优化使用神威·太湖之光的DMA-intrinsic接口单独设置操作属性、传输模式、传输量、跨步大小的DMA描述符。进一步的,在步骤4中,数据布局优化包括对核心段程序变量依赖关系的分析,对相同形式的数组拼接或者合并。进一步的,在步骤5中,双缓冲优化指在从核64KB的SPM中开辟2倍于所传递数据大小的空间用于存放互为缓冲的数据,在通信过程中除了第一轮次的读入与最后一轮次的写出之外,当计算从核核心进行本轮次计算的同时进行上一轮次的读入与下一轮次的写回。进一步的,在步骤6中,SIMD向量化优化包括数组对界填充、处理不对界数组、扩展变量替换与循环分裂。进一步的,在步骤7中,寄存器通信优化指使用寄存器通信的汇编命令,利用C语言的内联汇编语言在SW26010处理器的计算核心上通过阵列中同行/同列核心间的通信。与现有技术相比,本专利技术有以下技术效果:本专利技术其依次包括了分块众核并行优化、DMA传输优化、数据布局优化、双缓冲优化、SIMD向量化优化、寄存器通信优化,该方本文档来自技高网
...

【技术保护点】
1.一种基于超级计算机的流体机械仿真程序优化方法,其特征在于,包括以下步骤:步骤1,利用超级计算机神威·太湖之光超算平台gprof对流体机械仿真程序算法进行剖分,寻找程序算法中符合神威·太湖之光体系结构加速的计算密集型算法部分,并将该部分算法改写为针对神威·太湖之光编程平台的算法;步骤2,对完成步骤1的流体机械仿真程序中计算密集型部分进行分块众核并行优化,根据基于空间限制、传输效率限制、映射限制、数据量限制四个条件限制的分块规则,将数据根据跨步读取规则与映射规则分发至SW26010处理器从核进行加速计算;步骤3,对完成步骤2分块众核并行优化的流体机械仿真程序进行DMA传输优化:依据步骤2中从核所需的数据,使用DMA‑intrinsic接口编写DMA传输控制程序;步骤4,对完成步骤3的程序进行数据布局优化,对流体机械仿真程序的核心段程序进行变量依赖关系分析,将数据进行拼接或整合;步骤5,对完成步骤4的程序进行双缓冲优化,将通信与计算重叠;步骤6,对完成步骤5的程序使用神威·太湖之光的向量化部件进行SIMD向量化优化;步骤7,对完成步骤6的程序进行寄存器通信优化,同时对程序进行性能分析和代码整理分析,若分析结果低于程序预期性能,或发现程序经过迭代修改后在设计上有进一步提升的空间,则重复进行步骤1‑7,若结果满足预期性能,则基于神威·太湖之光体系结构的流体机械仿真程序优化结束。...

【技术特征摘要】
1.一种基于超级计算机的流体机械仿真程序优化方法,其特征在于,包括以下步骤:步骤1,利用超级计算机神威·太湖之光超算平台gprof对流体机械仿真程序算法进行剖分,寻找程序算法中符合神威·太湖之光体系结构加速的计算密集型算法部分,并将该部分算法改写为针对神威·太湖之光编程平台的算法;步骤2,对完成步骤1的流体机械仿真程序中计算密集型部分进行分块众核并行优化,根据基于空间限制、传输效率限制、映射限制、数据量限制四个条件限制的分块规则,将数据根据跨步读取规则与映射规则分发至SW26010处理器从核进行加速计算;步骤3,对完成步骤2分块众核并行优化的流体机械仿真程序进行DMA传输优化:依据步骤2中从核所需的数据,使用DMA-intrinsic接口编写DMA传输控制程序;步骤4,对完成步骤3的程序进行数据布局优化,对流体机械仿真程序的核心段程序进行变量依赖关系分析,将数据进行拼接或整合;步骤5,对完成步骤4的程序进行双缓冲优化,将通信与计算重叠;步骤6,对完成步骤5的程序使用神威·太湖之光的向量化部件进行SIMD向量化优化;步骤7,对完成步骤6的程序进行寄存器通信优化,同时对程序进行性能分析和代码整理分析,若分析结果低于程序预期性能,或发现程序经过迭代修改后在设计上有进一步提升的空间,则重复进行步骤1-7,若结果满足预期性能,则基于神威·太湖之光体系结构的流体机械仿真程序优化结束。2.根据权利要求1所述的一种基于超级计算机的流体机械仿真程序优化方法,其特征在于,在步骤1中,神威·太湖之光体系结构为基于SW26010处理器构建的超算平台,共包含40960块SW26010处理器,每个处理器包含4个核组,每个核组包含1个MPE,简称主核和64个CPEs,简称从核,从核分布在8×8的阵列中;计算密集型算法部分是指计算任务之间没有直接的相互依赖关系,适合利用大规模并行方式进行处理的算法部分;针对神威·太湖之光编程平台的算法指基于神威·太湖之光编程环境的,可以充分利用SW26010MPE与CPEs计算能力的流体机械算法;神威·太湖之光编程平台指神威·太湖之光的编程特点:MPE主核的编译器支持C,C++和Fortran3种编程语言,使用时需要引入“athread.h”头文件,CPEs从核上的编译器只支持C与Fortran两种编程语言,使用时需要引入“slave.h”头文件。3.根据权利要求1所述的一种基于超级计算机的流体机械仿真程序优化方法,其特征在于,在步骤2中,分块众核并行优化包括三个部分:1)基于空间限制、传输效率、映射限制、数据量限制四个条件的分块规则,空间限制指可配置为局部数据存储器LDM的从核便笺式存储器SPM空间只有64KB,即LDMsize≤60KB;传输效率限制指当传输数据主存地址为128B对界,且传输量为128B...

【专利技术属性】
技术研发人员:张兴军李靖波董小社周剑锋鲁晨欣邹年俊肖兮
申请(专利权)人:西安交通大学
类型:发明
国别省市:陕西,61

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

1