基于格子Boltzmann理论实现协同计算大涡模拟系统及方法

文档序号:6537891阅读:306来源:国知局
基于格子Boltzmann理论实现协同计算大涡模拟系统及方法
【专利摘要】本发明披露了基于格子Boltzmann理论实现协同计算大涡模拟系统及方法,其中系统包括:主进程模块将输入的数据广播给系统中的其它进程模块,待全部MIC进程模块和CPU进程模块完成所有计算任务后,将所有节点的计算结果输出;MIC进程模块将输入的数据卸载给相应的MIC进行计算,同时与相邻节点的MIC进程模块或CPU进程模块进行数据通信,然后进入下一迭代;CPU进程模块控制本节点的协同计算,根据CPU的核数为每一CPU核启用相应的线程对分配的部分数据进行计算;同时与相邻节点的MIC进程模块或CPU进程模块进行数据通信,然后进入下一迭代。本发明在多节点下利用CPU以及MIC降低功耗的优势进行协同计算,实现简单,成本低。
【专利说明】基于格子Boltzmann理论实现协同计算大润模拟系统及方法
【技术领域】
[0001]本发明涉及基于格子Boltzmann理论的大涡模拟方法,尤其涉及基于格子Boltzmann理论使用CPU和MIC协同计算模式进行大涡模拟的方法及系统。
【背景技术】
[0002]格子Boltzmann 方法(LBM, Lattice_BoItzmannMethod)从它诞生至今已有 20 年。在此期间,其在理论和应用研究等方面都取得了迅速发展,并逐渐成为在相关领域研究的国际热点之一,受到国内外众多学者的关注。与传统模拟方法不同,格子Boltzmann方法基于分子动理论,具有清晰的物理背景。该方法是Boltzmann方程的一个特殊的离散格式。在宏观上它是离散方法,微观上是连续方法,因而被称为介观模拟方法。在许多传统模拟方法难以胜任的领域,如微尺度流动与换热、多孔介质、生物流体、磁流体、晶体生长等,运用格子Boltzmann方法都可以对对象进行有效的模拟,因此它被用于多种复杂现象的机理研究,推动了相关学科的发展。可以说,格子Boltzmann方法不仅仅是一种数值模拟方法,而且是一项重要的科学研究手段。此外,格子Boltzmann方法还具有天生的并行特性,以及边界条件处理简单、程序易于实施等优点。可以预计,随着计算机技术的进一步发展,以及计算方法的逐渐丰富,格子Boltzmann方法将会取得更多成果,并为科技发展发挥更重要的作用。作为一门多学科的 交叉产物,格子Boltzmann方法涉及统计力学、流体力学、热力学、传热学以及计算数学等诸多学科。
[0003]新的Intel?Xeon Phi?协处理器(MIC Many Integrated Core)构建在至强处理器的并行编程原则之上,基于X86架构,通过集成诸多(至少50个)低功耗处理器内核,每一个处理器内核具备一个512位的单指令多数据流(SIMD, Single-1nstruction Multiple-Datastream)处理单元和很多新的向量运算指令。Intel?Xeon Phi?处理器优化了每瓦性能。超过每秒一万亿次的计算能力,Intel?Xeon Phi?创造了实现在一个芯片上的超级计算机之奇迹。这个崭新的微架构具备突破性的每瓦性能,但也依赖于那些能够充分并行扩展到诸多内核、线程和向量的应用程序。英特尔采取了一种崭新的方法来帮助释放这种并行能力。英特尔尽最大可能沿用了人们易于理解的标准编程语言(包括C,C++和Fortran)以及现存的并行编程标准。程序员不再被迫采用非标准的或是硬件依赖的编程模式;而且,这种基于标准的方法保证了最大的代码重用,通过编写可移植、标准化以及面向当前和未来的兼容并行代码将会获得最大的回报。
[0004]MIC拥有极其灵活的编程方式。MIC可以作为一个协处理器存在,也可以被看作是一个独立的节点。基本的MIC编程模型是将MIC看作一个协处理器,CPU根据程序的指令,将一部分代码运行在MIC端。此时存在两类设备,即CPU端和MIC多核协处理器端。
[0005]大润模拟(LES, Large Eddy Simulation),是近几十年才发展起来的一个流体力学中重要的数值模拟研究方法。它区别于直接数值模拟(DNS, Direct numericalsimulation)和雷诺平均(RANS, Reynolds-AveragedNavier-Stokes)方法。其基本思想是对大涡进行计算,对小涡进行模拟。通过滤波函数将湍流的瞬时运动信号分解成大尺度涡运动和小尺度涡运动两部分;其中的大尺度涡拥有较大比例的湍流动能,对雷诺应力产生及湍流扩散起主要作用,且大涡的运动较强依赖于边界条件,即依赖于个别的流动情况,不存在通用模型,须通过控制方程直接进行数值求解;而小尺度涡主要起耗散作用,在高雷诺数下小涡运动趋向各向同性,受边界条件影响较小,故使用通用模型进行模拟。通过精确求解某个尺度以上所有湍流尺度的运动,从而能够捕捉到RANS方法所无能为力的许多非稳态、非平衡过程中出现的大尺度效应和拟序结构,同时又克服了直接数值模拟需要求解所有湍流尺度而带来的巨大计算开销的问题,因而被认为是最具有潜力的湍流数值模拟发展方向。由于其计算耗费依然很大,目前大涡模拟还无法在工程上广泛应用。但是大涡模拟技术对于研究许多流动机理问题提供了更为可靠的手段,可为流动控制提供理论基础,并可为工程上广泛应用的RANS方法改进提供指导。
[0006]格子Boltzmann方法(LBM)是计算流体力学领域内一种不同于传统数值方法的建模和计算方法,是对Boltzmann方程的一种特殊的离散格式的求解。求解过程是时间推进式的,并且求解过程具有良好的区域性,所以特别适合并行求解。
[0007]—般对格子Boltzmann方程求解,可以分解为两部分:
[0008]I)碰撞项,它与粒子离散速度的不同方向、离散节点的位置、粒子碰撞更新后的平衡分布函数以及松弛时间相关;而松弛时间又与特征速度、特征长度及雷诺数Re相关;
[0009]2)迁移项,它与离散速度方向上的粒子分布函数、时间步长以及离散方向上粒子的速度相关。
[0010]如图1所示的LBM的D2Q9模型中,每个格点中都有9个不同方向的平衡分布函数。格点上的宏观变量如密度、压强以及速度等都可以由粒子分布函数得到平衡分布函数。
[0011]使用MIC协处理器在单节点内的CPU+MIC协同计算的快速大涡模拟方法是一种效率极高的方法,但是对于超大规模的数据来说,单节点的处理仍然不能满足要求,所以采用基于LBM方法在多节点上CPU/MIC协同计算大涡模拟势在必行,它能够极大地满足很多科学家在流体力学方面处理大规模数据的需求。

【发明内容】

[0012]本发明所要解决的技术问题是提供一种基于格子Boltzmann实现协同计算大涡模拟方法及系统,能够在多MIC节点上采用CPU和MIC协同计算大涡模拟方法。
[0013]为了解决上述技术问题,本发明提供了一种基于格子Boltzmann实现协同计算大涡模拟系统,除了包括N个节点设备外,还包括每个节点设备含有一个CPU及其相应的CPU进程模块以及m个微处理器及其相应的m个微处理器进程模块,在所有进程模块中选定一个为主进程模块,N和m为正整数;其中:
[0014]主进程模块,用于将输入的数据广播给系统中的其它进程模块,待全部微处理器进程模块和CPU进程模块完成所有计算任务后,将从所有节点接收的计算结果输出;
[0015]微处理器进程模块,用于将输入的数据卸载给相应的微处理器进行计算,同时与相邻节点的微处理器进程模块或CPU进程模块进行数据通信,然后进入下一迭代的计算;
[0016]CPU进程模块,用于控制本节点的协同计算,根据CPU的核数为每一 CPU核启用相应的线程对分配的部分数据进行计算;同时与相邻节点的微处理器进程模块或CPU进程模块进行数据通信,然后进入下一迭代的计算。
[0017]进一步地,
[0018]主进程模块通过消息传递接口方式将数据广播给其它进程模块;通过消息传递接口方式将接收的计算结果输出;
[0019]微处理器进程模块或CPU进程模块与相邻节点的微处理器进程模块或CPU进程模块通过消息传递接口方式进行数据通信。
[0020]进一步地,在进行数据广播之前根据系统内的节点数N对流场计算域进行网格划分,根据网格总高为每个节点均分总高,得到行高,以及均分行高得到每一微处理器和CPU分行的高。
[0021]进一步地,
[0022]微处理器进程模块根据微处理器内核数η设总线程数为Τ,则T=t*n,其中,该t是为微处理器设的线程数;节点内所有的微处理器线程并行进行本节点分配的网格数据中的每一分行网格点的计算,且利用微处理器上的向量化处理加速每一分行网格点的计算;
[0023]CPU进程模块中的所有线程参与相应分行网格点的计算;其中,CPU线程控制进行该分行网格点的初始化密度、速度及平衡分布函数,并对分布函数赋值,控制微处理器线程和CPU线程协同对分行网格点通过碰撞过程求出离散方程f*,通过迁移过程求出下一时刻的分布函数,由分行网格点上的分布函数统计密度和速度,利用统计出的密度值和速度值计算平衡分布函数;对网格点的边界进行计算。
[0024]进一步地,微处理器线程和CPU线程通过各自的内核函数并行计算本分行网格点的迁移过程和碰撞过程,并在微处理器上利用向量化处理单元对该过程的主体计算部分进行向量化处理;同时采用反弹法、非平衡外推法中的任意一种对网格点的边界进行计算。
[0025]为了解决上述技术问题,本发明提供了一种适用于如前所述系统的基于格子Boltzmann实现协同计算大润模拟的方法,包括:
[0026]确定该系统内的节点及其进程,将计算区域进行网格划分;由选定的主进程将输入的计算数据广播给各节点;
[0027]由每一节点的CPU进程进行计算初始化,确定本节点的宏观参量及分布函数,并控制本节点的微处理器进程和CPU线程协同在同一时层采用迁移碰撞求解离散方程,并进行边界处理,完成本节点上宏观参量的计算;微处理器进程和CPU线程同时与相邻节点的微处理器进程或CPU进程进行数据通信。
[0028]由主进程输出所有节点的计算结果。
[0029]进一步地,在该方法执行前还包括:进行物理建模,确定计算区域、初始条件以及边界条件。
[0030]进一步地,确定该系统内的节点及其进程,将计算区域进行网格划分,具体包括:
[0031]根据该系统内的计算设备确定节点,为每一节点配置微处理器进程和CPU进程,选定其中一个进程为主进程;
[0032]根据该系统内的节点数N对流场计算域进行网格划分,根据网格总高为每个节点均分总高,得到行高,以及均分行高得到每一微处理器和CPU分行的高。
[0033]进一步地,由每一节点的CPU进程进行计算初始化,确定本节点的宏观参量及分布函数,并控制本节点的MIC进程和CPU线程协同在同一时层采用迁移碰撞求解离散方程,并进行边界处理,完成本节点上宏观参量的计算,具体包括:
[0034]微处理器进程模块根据微处理器内核数η设总线程数为Τ,则T=t*n,其中,该t为微处理器可设的线程数;CPU进程根据CPU的核数为每一 CPU核启用相应的线程;
[0035]CPU线程对分配的相应分行网格点进行初始化密度、速度及平衡分布函数,并对分布函数赋值,控制所述微处理器线程和CPU线程协同对分行网格点通过碰撞过程求出离散方程f*,通过迁移过程求出下一时刻的分布函数,由分行网格点上的分布函数统计密度和速度,利用统计出的密度值和速度值计算平衡分布函数,利用微处理器上的向量化处理加速分行网格点的计算;同时采用反弹法、非平衡外推法中的任意一种对分行网格点的边界进行计算。
[0036]进一步地,主进程通过消息传递接口方式将数据广播给其它进程模块;通过消息传递接口方式将接收的计算结果输出;微处理器进程和CPU进程与相邻节点的微处理器进程或CPU进程通过消息传递接口方式进行数据通信。
[0037]本发明不仅提高了格子Boltzmann方法的处理性能,满足了流体模拟的需求,而且能够在多MIC节点下充分利用CPU以及MIC协处理器可降低功耗的优势,并且这种方法实现简单,且需要的开发成本低,大大减少机房构建成本和管理、运行以及维护费用。
【专利附图】

【附图说明】
[0038]图1为LBM 二维D2Q9模型示意图;
[0039]图2为本发明的基于格子Boltzmann实现协同计算大涡模拟系统实施例的框架;
[0040]图3为图2所示的系统实施例进行CPU-MIC协同计算的数据流图;
[0041]图4为图2所示的系统实施例中对数据进行网格划分的方式;
[0042]图5为图2所示的系统实施例中数据传递边界部分迁移过程示意图
[0043]图6为图2所示的系统实施例中节点间的数据传递示意图;
[0044]图7为图2所示的系统实施例中同一节点上设备间的数据传递示意图;
[0045]图8为本发明的基于格子Boltzmann实现协同计算大涡模拟方法实施例的流程图。
【具体实施方式】
[0046]以下结合附图和优选实施例对本发明的技术方案进行详细地阐述。以下列举的实施例仅用于说明和解释本发明,而不构成对本发明技术方案的限制。
[0047]在实现本发明的方法之前,先在单节点上使用专业工具分析用格子Boltzmann进行大涡模拟方法的性能瓶颈测试,分析移植到多MIC节点相应平台的可行性,找到实现大涡模拟耗时的热点代码,测试这些热点代码在大涡模拟的整个过程中所占的时间比例,分析提高整个方法性能的难度,再通过测试结果表明在采用格子Boltzmann理论实现大涡模拟方法时,大部分的时间消耗在求解离散方程和边界处理过程,求解离散方程是通过迁移和碰撞的过程实现的,因此,求解离散方程和边界处理的迭代过程是基于格子Boltzmann理论大涡模拟方法中的性能瓶颈,同时随着大涡模拟过程数据量的增大,表现出单节点已经无法满足性能需求,需要增加计算节点来组织大规模计算。
[0048]本发明的基于格子Boltzmann实现协同计算大涡模拟系统实施例的框架结构如图2所示,该系统的集群包括多个节点(N个)设备(图2中简称节点),每个节点设备里含有一个CPU和相应配给的一个CPU进程模块(图2中简称C进程)以及m个MIC及相应配给的m个MIC进程模块(图2中简称M进程),在所有进程模块中选定一个为主进程模块;其中各CPU和各MIC协同计算的数据流图请参见图3所示:
[0049]主进程模块,用于将输入的数据广播给集群中的其它进程模块,待全部MIC进程模块和(PU进程模块完成所有计算任务后,将所有节点的计算结果输出;
[0050]CPU进程模块,用于控制本节点的协同计算,根据CPU的核数为每一 CPU核启用相应的线程对分配的部分数据进行计算;同时与相邻节点的MIC进程模块或CPU进程模块进行数据通信,然后进入下一迭代的计算;
[0051]MIC进程模块,用于将输入的数据卸载给相应的MIC进行计算,同时与相邻节点的MIC进程模块或CPU进程模块进行数据通信,然后进入下一迭代的计算。
[0052]在上述系统实施例中,
[0053]主进程模块通过消息传递接口(MPI,Message Passing Interface)方式将数据广播给系统中的其它进程模块;通过MPI方式将接收的计算结果输出;
[0054]MIC进程模块或CPU进程模块与相邻节点的MIC进程模块或CPU进程模块通过MPI方式进行数据通信。
[0055]在上述系统实施例中,
[0056]主进程模块在进行数据广播之前根据系统内的节点数对流场计算域进行网格划分,如图4所示,假设网格总大小为(nx,ny),对于每个节点的网格平均划分每行的高分别为:
[0057]
【权利要求】
1.一种基于格子Boltzmann实现协同计算大润模拟系统,包括N个节点设备,其特征在于,每个节点设备含有一个CPU及其相应的CPU进程模块以及m个微处理器及其相应的m个微处理器进程模块,在所有进程模块中选定一个为主进程模块,所述N和所述m为正整数;其中: 主进程模块,用于将输入的数据广播给系统中的其它进程模块,待全部微处理器进程模块和(PU进程模块完成所有计算任务后,将从所有节点接收的计算结果输出; 微处理器进程模块,用于将输入的数据卸载给相应的微处理器进行计算,同时与相邻节点的微处理器进程模块或CPU进程模块进行数据通信,然后进入下一迭代的计算; CPU进程模块,用于控制本节点的协同计算,根据CPU的核数为每一 CPU核启用相应的线程对分配的部分数据进行计算;同时与相邻节点的微处理器进程模块或CPU进程模块进行数据通信,然后进入下一迭代的计算。
2.按照权利要求1所述的系统,其特征在于, 所述主进程模块通过消息传递接口方式将数据广播给所述其它进程模块;通过所述消息传递接口方式将接收的计算结果输出; 所述微处理器进程模块或CPU进程模块与相邻节点的微处理器进程模块或CPU进程模块通过所述消息传递接口方式进行数据通信。
3.按照权利要求1所述的系统,其特征在于,在进行数据广播之前根据所述系统内的节点数N对流场计算域进行网格划分,根据网格总高为每个节点均分所述总高,得到行高,以及均分所述行高得到每一微处理器和CPU分行的高。
4.按照权利要求1所述的系统,其特征在于, 所述微处理器进程模块根据微处理器内核数η设总线程数为Τ,则T=t*n,其中,该t是为微处理器设的线程数;所述节点内所有的微处理器线程并行进行本节点分配的网格数据中的每一分行网格点的计算,且利用微处理器上的向量化处理加速所述每一分行网格点的计算; 所述CPU进程模块中的所有线程参与相应分行网格点的计算;其中,CPU线程控制进行该分行网格点的初始化密度、速度及平衡分布函数,并对分布函数赋值,控制所述微处理器线程和所述CPU线程协同对所述分行网格点通过碰撞过程求出离散方程f*,通过迁移过程求出下一时刻的分布函数,由所述分行网格点上的分布函数统计密度和速度,利用统计出的密度值和速度值计算平衡分布函数;对网格点的边界进行计算。
5.按照权利要求4所述的系统,其特征在于, 所述微处理器线程和所述CPU线程通过各自的内核函数并行计算本分行网格点的所述迁移过程和所述碰撞过程,并在微处理器上利用向量化处理单元对该过程的主体计算部分进行向量化处理;同时采用反弹法、非平衡外推法中的任意一种对网格点的边界进行计算。
6.一种适用于如权利要求1所述系统的基于格子Boltzmann实现协同计算大涡模拟的方法,包括: 确定所述系统内的节点及其进程,将计算区域进行网格划分;由选定的主进程将输入的计算数据广播给各节点; 由每一节点的CPU进程进行计算初始化,确定本节点的宏观参量及分布函数,并控制本节点的微处理器进程和CPU线程协同在同一时层采用迁移碰撞求解离散方程,并进行边界处理,完成本节点上宏观参量的计算;微处理器进程和CPU线程同时与相邻节点的微处理器进程或CPU进程进行数据通信; 由主进程输出所有节点的计算结果。
7.按照权利里要求6所述的方法,其特征在于,在所述方法执行前还包括:进行物理建模,确定所述计算区域、初始条件以及边界条件。
8.按照权利要求7所述的方法,其特征在于,所述确定所述系统内的节点及其进程,将计算区域进行网格划分,具体包括: 根据所述系统内的计算设备确定节点,为每一节点配置微处理器进程和CPU进程,选定其中一个进程为所述主进程; 根据所述系统内的节点数N对流场计算域进行网格划分,根据网格总高为每个节点均分所述总高,得到行高,以及均分所述行高得到每一微处理器和CPU分行的高。
9.按照权利要求8所述的方法,其特征在于,所述由每一节点的CPU进程进行计算初始化,确定本节点的宏观参量及分布函数,并控制本节点的MIC进程和CPU线程协同在同一时层采用迁移碰撞求解离散方程,并进行边界处理,完成本节点上宏观参量的计算,具体包括: 所述微处理器进程模块根据微处理器内核数η设总线程数为Τ,则T=t*n,其中,该t为微处理器可设的 线程数;所述CPU进程根据CPU的核数为每一 CPU核启用相应的线程; 所述CPU线程对分配的相应分行网格点进行初始化密度、速度及平衡分布函数,并对分布函数赋值,控制所述微处理器线程和所述CPU线程协同对所述分行网格点通过碰撞过程求出离散方程f*,通过迁移过程求出下一时刻的分布函数,由所述分行网格点上的分布函数统计密度和速度,利用统计出的密度值和速度值计算平衡分布函数,利用微处理器上的向量化处理加速所述分行网格点的计算;同时采用反弹法、非平衡外推法中的任意一种对所述分行网格点的边界进行计算。
10.按照权利要求6至9任一项所述的方法,其特征在于, 所述主进程通过消息传递接口方式将数据广播给所述其它进程模块;通过所述消息传递接口方式将接收的计算结果输出; 所述微处理器进程和所述CPU进程与相邻节点的微处理器进程或CPU进程通过所述消息传递接口方式进行数据通信。
【文档编号】G06F9/46GK103778098SQ201410053493
【公开日】2014年5月7日 申请日期:2014年2月17日 优先权日:2014年2月17日
【发明者】卢晓伟, 张清 申请人:浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1