CN112380793B - 基于gpu的湍流燃烧数值模拟并行加速实现方法 - Google Patents
基于gpu的湍流燃烧数值模拟并行加速实现方法 Download PDFInfo
- Publication number
- CN112380793B CN112380793B CN202011294549.8A CN202011294549A CN112380793B CN 112380793 B CN112380793 B CN 112380793B CN 202011294549 A CN202011294549 A CN 202011294549A CN 112380793 B CN112380793 B CN 112380793B
- Authority
- CN
- China
- Prior art keywords
- grid
- calculation
- data
- information
- domain
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 81
- 238000002485 combustion reaction Methods 0.000 title claims abstract description 26
- 238000004088 simulation Methods 0.000 title claims abstract description 25
- 230000001133 acceleration Effects 0.000 title abstract description 18
- 238000004364 calculation method Methods 0.000 claims abstract description 100
- 230000008569 process Effects 0.000 claims abstract description 33
- 238000006243 chemical reaction Methods 0.000 claims description 35
- 230000004907 flux Effects 0.000 claims description 32
- 239000002245 particle Substances 0.000 claims description 13
- 238000004891 communication Methods 0.000 claims description 8
- 239000000126 substance Substances 0.000 claims description 6
- 239000011159 matrix material Substances 0.000 claims description 5
- 238000012545 processing Methods 0.000 claims description 5
- 238000012804 iterative process Methods 0.000 claims description 4
- 239000013598 vector Substances 0.000 claims description 4
- 230000008859 change Effects 0.000 claims description 3
- 239000012530 fluid Substances 0.000 description 9
- 230000000694 effects Effects 0.000 description 7
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000006757 chemical reactions by type Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000036632 reaction speed Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 241000894007 species Species 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/28—Design optimisation, verification or simulation using fluid dynamics, e.g. using Navier-Stokes equations or computational fluid dynamics [CFD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/15—Vehicle, aircraft or watercraft design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/25—Design optimisation, verification or simulation using particle-based methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/10—Numerical modelling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2113/00—Details relating to the application field
- G06F2113/08—Fluids
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02T—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
- Y02T90/00—Enabling technologies or technologies with a potential or indirect contribution to GHG emissions mitigation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computer Hardware Design (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Software Systems (AREA)
- Computational Mathematics (AREA)
- Aviation & Aerospace Engineering (AREA)
- Automation & Control Theory (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Fluid Mechanics (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
一种基于GPU的湍流燃烧数值模拟并行加速实现方法,通过设置GPU并行计算龙格‑库塔方法的求解过程中的迭代部分,配合设置CPU进行计算过程的数据读取、数据输出以及计算流程控制,经加速运算后得到稳态的准确能量密度的分布和温度分布,从而实现对湍流燃烧问题的稳态数值模拟。本发明利用GPU的计算能力和硬件特性对数值模拟过程进行加速,能够快速得到稳态的准确能量密度的分布和温度分布,从而可以得到对湍流燃烧问题的稳态数值模拟。
Description
技术领域
本发明涉及的是一种流体力学模拟领域的技术,具体是一种基于GPU的湍流燃烧数值模拟并行加速实现方法。
背景技术
湍流燃烧的数值模拟是航空发动机燃烧室内部燃烧流动过程的重要研究手段,已成为燃烧室性能预估和设计定型的工具之一。由于湍流燃烧过程涉及复杂的流体运动和动力学过程,相比于传统的实验方法,数值计算不仅可以花费更短的时间与更少的经济成本,而且可以模拟更复杂的流场和条件,提供更详细的流场数据和更精细的流动细节。但是,湍流燃烧问题需要使用高精度模型,如DNS、LES对NS方程(纳维-斯托克斯方程)数值求解以进行湍流模拟,带来了庞大的计算量,而复杂的物理化学模型的引入,则导致流场极为复杂,计算负载在整个计算域分布非常不平衡,给大规模并行计算带来了严重挑战,尤其对于传统的CPU集群,通常涉及成千上万核心的进程级并行计算,很难实现针对不同算例的高效率并行扩展。
纳维-斯托克斯方程是在宏观连续性介质的假设下,对质量、动量、能量守恒的数学描述。其一般的形式为:其中:f(u)和g(u)分别是非黏性项和黏性项,结合边界条件可对该方程进行求解。龙格-库塔(Runge-Kutta)方法是处理NS方程中间阶段以实现高阶精度的一种方法。一般的r阶龙格-库塔方法通过同时显式地处理f和g来积分方程: 其中:un和un+1是位于时刻tn和tn+1的系统状态。ai,bij,cij.ωi均为与精度和稳定性有关的参数。可以通过网格划分和限制时间步的方法对NS方程进行迭代求解。其中每一步得到新的时间步的数值近似解,通过迭代即可得到最终的稳态。该求解方法对非黏性项g的计算是非线性的,其实际的计算效率较差。因此,对非黏性项g进行隐式的处理,即可得到半隐式的龙格-库塔方法:/> 其中:J为非黏性项的雅可比矩阵。为了进一步简化计算,令dij=cij,固定ai和bi,令阶数为2。这种简化会有一定的精度损失,但是可以通过一定程度的加密网格进行弥补。
湍流是流体的一种流动状态。当流体流速较小时流体相互间会分层,互不干扰,这种情况称为层流状态;而当流速增加,由于层间的相互作用力,流线会开始出现波浪状的摆动,这种情况成为过渡流;当流速继续增加到很大时,流线难以分辨,流场中会出现一个个不稳定的小漩涡,这种情况就称为湍流。
流体中可能存在化学反应,会对流体的状态造成复杂的影响。其中物质之间存在的化学反应平衡:其中:I是反应的种类,K是粒子的种类。v′ki和v″ki是第i个反应中,物质xk正逆向反应的系数。从这些化学反应的反应平衡以及平衡常数,我们可以得到其反应速率:/>其中:vki=v″ki-v′ki,qi是通过反应平衡常数以及物质实时浓度计算得到的参数。
同时流体的温度,压力也会影响反应速率,进而影响能量的变化和流体的状态。且包含燃烧的流体会产生剧烈的能量波动,实际的状态必须用湍流来描述。因此,包含湍流燃烧的流体力学问题会有更多更复杂的计算量。
因此现有技术针对湍流燃烧问题,使用二阶半隐式龙格-库塔方法在GPU上进行数值模拟,采用高效的计算模式和并行策略,一定程度上提高了计算效率。而针对非灰模型有限体积法的算法,在GPU上进行空间和角度并行的加速,或采用频率和空间混合并行的策略进行加速,一定程度上提高了计算效率。
发明内容
本发明针对现有技术存在的上述不足,提出一种基于GPU的湍流燃烧数值模拟并行加速实现方法,利用GPU的计算能力和硬件特性对数值模拟过程进行加速,能够快速得到稳态的准确能量密度的分布和温度分布,从而可以得到对湍流燃烧问题的稳态数值模拟。
本发明是通过以下技术方案实现的:
本发明涉及一种基于GPU的湍流燃烧数值模拟并行加速实现方法,通过设置GPU并行计算龙格-库塔方法的求解过程中的迭代部分,配合设置CPU进行计算过程的数据读取、数据输出以及计算流程控制,经加速运算后得到稳态的准确能量密度的分布和温度分布,从而实现对湍流燃烧问题的稳态数值模拟。
所述的龙格-库塔方法的求解过程为:[I-ha1J(un)]k1=h{f(un)+g(un)},[I-ha2J(un)]k2=h{f(un+b21k1)+g(un+c21k1)},un+1=un+ω1k1+ω2k2,其中:I为单位矩阵,J为非黏性项的雅可比矩阵,f和g分别为非黏性项和黏性项的通量,h为时间步长,a,b,c,ω为与精度和稳定性有关的常参数。迭代部分包括:循环计算黏性通量、非黏性通量以及化学反应数据,从而得到第一迭代系数k1后刷新网格状态信息并重新计算黏性通量、非黏性通量以及化学反应数据,从而得到第二迭代系数k2更新网格状态的迭代过程,直至稳态判断通过。
所述的数据读取包括:读入网格文件、边界条件以及参数文件并获取所有网格内的初始状态。
所述的初始状态包括:位置、速度、温度、压强、动量、动能。
所述的数据输出是指:将网格化后的计算域的状态数组输出至GPU。
所述的状态数组包括:位置、速度、温度、压强、动量、动能。
所述的计算流程控制包括:根据给定的并行数对计算域进行划分,给每个进程分配相应的计算域并把数据传输给对应进程;每个进程对各自计算域内的网格初始化,计算网格内部的温度和压强信息。
本发明涉及一种实现上述方法的系统,包括:设置于GPU中的迭代计算单元以及设置于CPU中的数据读取单元、数据输出单元以及流程控制单元,其中:迭代计算单元接收网格速度、位置信息,计算网格黏性及非黏性通量,进行线性方程求解得到龙格-库塔方法的两个迭代系数并输出至数据处理单元,数据读取单元根据该迭代系数进行迭代计算更新数据至数据输出单元,对于多处理器系统通过数据输出输入单元进行数据交换,数据输出单元接收网格单元数据并与上一轮数据进行对比,将结果输出至流程控制单元,当两轮迭代数据变化高于设定阈值,则流程控制单元进入新一轮迭代,否则将数据输出至包含位置、速度、压强、温度和动量信息的结果文件。
技术效果
本发明整体解决了现有技术无法进行湍流燃烧CFD问题的高精度数值模拟的缺陷。
与现有技术相比,本发明采用CPU-GPU协作的异构计算模式,采用CUDA编程框架,实现了对采用龙格-库塔方法对湍流燃烧问题数值模拟方法的并行加速。整个迭代过程的计算部分都在GPU上执行,一方面可以对热点计算部分进行加速,另一方面是使得整个迭代过程的数值更新都在GPU内进行,可以减少CPU与GPU之间的数据传输,进一步提高GPU计算效率。通过对网格大小为85万,粒子种类为10种,反应种类为19种的算例,16台GPU迭代速度相较40核心CPU的迭代计算有66.1倍的提高。
附图说明
图1为龙格-库塔法模拟求解湍流燃烧问题的GPU实现流程图;
图2为GPU上通量计算流程图;
图3为GPU通信优化结果示意图;
图4为CPU并行扩展效率示意图;
图5为GPU并行扩展效率示意图。
具体实施方式
如图1所示,为本实施例涉及一种基于GPU实现龙格-库塔方法对湍流燃烧问题数值模拟的方法,包括:
步骤1)读入网格文件,边界条件以及参数文件,获取所有网格内的初始状态,包括位置,速度,具体为:读取网格参数文件inputCtrlParameters、网格文件inputmesh.xzy、边界条件BoundaryConditions以及化学反应信息ChemicalResource。
所述的网格参数文件包括:网格文件、边界条件文件的路径、参与计算的粒子数量及种类、每类粒子的质量、能量信息以及具体计算的方法与分支,包括:是否打开化学计算反应开关,采用何种方式对网格进行初始化信息。
所述的网格文件是之前划分好的网格信息,包括:整体网格的位置,大小数据,网格为六面体结构化网格,因此以1~6来表示面方向;
所述的边界条件包括:对整体计算域的边界信息,包括边界位置和稳定的边界流速。
所述的化学反应信息以参数中的粒子种类为基础,列出了在模拟过程中可能发生的化学反应信息,具体包括:每个反应的正逆向粒子种类、粒子数量以及反应的平衡常数。
步骤2)根据给定的并行数对计算域进行划分,给每个进程分配相应的计算域并把数据传输给对应进程,具体为:使用metis软件对计算域进行划分,得到包含每个核心负责的计算域的网格信息并重新排序,相邻计算域的重叠网格信息。
所述的网格的面为以下任意一种:a)整体计算域的物理边界、b)核心负责的计算域边界、c)核心负责的计算域内部网格。
步骤3)每个进程对各自计算域内的网格初始化,具体为:每个进程根据分配的网格单元以及面的种类对网格计算网格的体积、温度、压强;给每个网格贴上重新排序的序号,计算每个网格六个面的法向量,并根据面的种类给予不同的标签。
所述的初始化,进一步对于整体计算域边界上的面,赋予边界的流速温度压强信息;对于计算域内部的数据,根据初始的网格信息进行计算;对于计算域内部边界的面,保持相邻计算域的数据相同,在此之上进行初始化计算。
步骤4)进行CPU内存和GPU显存之间的每个网格的状态数组信息传输,具体为:
将整个迭代过程需要的所有数据由CPU内存复制到GPU现存。为保证数据结构读取和计算的一致性,在GPU上实现了同CPU类似的数据结构,使得在GPU计算过程中对数据的访存与CPU一致。
步骤5)计算黏性通量和非黏性通量,计算化学反应数据,根据[I-ha1J(un)]k1=h{f(un)+g(un)}计算第一迭代系数k1,具体为:根据当前迭代的数据,即网格目前的速度、温度、压强以及面的法向量,求出面通量的大小。由于同一个面由两个不同的网格共享,本实施例采用的遍历方法也是通过每个网格对每个面去遍历,因此同一个面只需要计算一次。
所述的面通量,对应网格的面的种类,包括:
①当该面为整体计算域的物理边界:在这种情况下,该面的通量为固定的边界状态,不需要计算;
②当该面为计算核心计算域边界:在这种情况下,因为需要的相邻网格并不在本计算域内部,所以每个计算域需要维持相邻计算域边界上的网格信息,并于每次通信时更新;
③该面为计算核心计算域内部面:根据上述规则,先判断该面是否由该网格计算,如果不需要则跳过,如果需要计算则获取相邻网格数据进行计算。计算完成后需要更新到相邻网格的对应面上。
本实施例中所述的遍历,通过对网格单元遍历,再对其六个面进行遍历计算,计算时需要面对应的相邻网格信息,因此还需要获取其相邻网格的信息。最终得到的通量应为两个相邻网格的通量相加。
本实施例维持一个额外的二维数据结构,其两个维度分别为网格索引和面索引,包含的信息为该面是否被该网格进行计算。本实施例规定同一个面对应的两个网格,由序号较小的网格对其进行计算。对于燃烧模块的计算,每个化学反应发生在网格内部,不受其他网格单元的影响,只需根据每个网格的压强温度,计算当前时刻的平衡系数,推断化学反应的反应方向和反应速度,改变化学反应的进程,改变粒子种类和数量,并产生新的能量。在计算完成之后,根据通量和化学反应信息计算第一迭代系数k1。
由于每个网格的计算相互独立,对于相邻的网格也可以通过上述方法避免同时计算和存储数据,因此可以以每个网格单元为单位,每个CUDA线程计算一个单元的六个面,对不属于该网格计算的面直接跳过。为了兼顾计算效率,GPU调度以及GPU寄存器分配,每个CUDA块(BLOCK)分配256个线程,则总的CUDA网格(GIRD)大小为(Cell的数量+255)/256。这样设置可以防止有CUDA线程未能分配到相应的网格单元。
对于计算域内部面,本实施例采用序号小的网格对其进行计算,并复制计算结果到相邻网格的对应面上。在GPU warp里,32个线程保持着SIMT(single instruction,multiple threads)的方式。对于Warp内的线程,如果有个线程对应的网格单元在本次计算中跳过,该线程需要待warp内其他线程的计算完成,才可以进行下一个面的计算。这种方法对于GPU线程资源有一定的损失,但是相对于以面对应GPU线程的计算方式,这种方式的存储基本可以合并访存,大大减少了存储延迟。对于GPU来说是相对更为友好的计算策略。
步骤6)刷新网格状态信息,相邻计算域间进行通信,具体为:将每个计算域内对应的与其他计算域相邻的网格信息收集起来,通过MPI发送给相邻计算域。当接收到相邻计算域的数据后,解开打包并更新到各个重叠网格。在此之后,根据上一步计算的通量重新对每个网格的温度、压强、速度信息进行更新。
本实施例先在GPU中收集整理需要传输的数据,利用CUDA-Aware MPI通过速度更快的GPU的管道对数据进行直接的传输,再在GPU端对数据进行展开和覆盖。通信的整体流程变为GPU->GPU,大幅提高了通信效率。
步骤7)重新计算黏性通量和非黏性通量,计算化学反应数据,并根据[I-ha2J(un)]k2=h{f(un+b21k1)+g(un+c21k1)}计算第二迭代系数k2。
步骤8)根据un+1=un+ω1k1+ω2k2更新网格状态,当满足稳定条件时输出结果,否则重复步骤5~步骤7,并将GPU数据传回CPU进行I/O输出。
本实施例采用固定时间步长和迭代步数的方法。也可以根据本次和上次迭代结果的差异来判断结果是否收敛。相比于根据计算实际情况修改时间步长的方法,本实施例有以下优势:一方面,节省了计算时间步的时间;另一方面,对于计算时间步的方法可能会导致某一步过大或过小,从而整体的数值模拟可能崩坏。因此,根据输入信息预估并固定时间步长,对于数值模拟结果有更好的稳定性。
采用以上介绍的技术,本实施例在DGX-2上(GPU型号为:NVIDIA Tesla V100*16),CPU型号为:Xeon 6248的平台上进行测试。测试将对比采用CPU-GPU并行计算和仅采用CPU进行并行计算的加速效果。CPU与GPU参数信息如下表:
在以上平台上对测试算例进行计算,测试算例的网格大小为825000,为二维同轴燃料-空气射流模拟;分别实现了通过CPU进行计算求解以及通过GPU对迭代部分进行加速求解。以CPU40核心计算速度为基准,图4所示为CPU并行加速效果,图5为GPU并行加速的加速效果,从图中可以看出,尽管二者计算强度不同,相较于CPU上40核心并行执行,本发明在82.5万个网格单元的算例上获得了66.1倍的加速比,即GPU版本达到并超过了CPU所能达到的最好性能。
综上,本发明通过控制条件减少GPU在通量计算中的计算量,避免了数据依赖;通过对通信数据的整合减少了通信开销,同时利用DGX-2的高速互联特性进一步优化了多处理器系统的通信效率;在计算过程中,对小的计算单元进行整合,优化计算顺序,针对GPU硬件特性进行了访存和计算上的优化,使得单计算函数的效率提升。
上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。
Claims (9)
1.一种基于GPU的湍流燃烧数值模拟并行加速实现方法,其特征在于,通过设置GPU并行计算龙格-库塔方法的求解过程中的迭代部分,配合设置CPU进行计算过程的数据读取、数据输出以及计算流程控制,经加速运算后得到稳态的准确能量密度的分布和温度分布,从而实现对湍流燃烧问题的稳态数值模拟;
所述的龙格-库塔方法的求解过程为:[I-ha1J(un)]k1=h{f(un)+g(un)},[I-ha2J(un)]k2=h{f(un+b21k1)+g(un+c21k1)},un+1=un+ω1k1+ω2k2,其中:I为单位矩阵,J为非黏性项的雅可比矩阵,f和g分别为非黏性项和黏性项的通量,h为时间步长,a,b,c,ω为与精度和稳定性有关的常参数,迭代部分包括:循环计算黏性通量、非黏性通量以及化学反应数据,从而得到第一迭代系数k1后刷新网格状态信息并重新计算黏性通量、非黏性通量以及化学反应数据,从而得到第二迭代系数k2更新网格状态的迭代过程,直至稳态判断通过;
所述的数据读取包括:读入网格文件、边界条件以及参数文件并获取所有网格内的初始状态;
所述的初始状态包括:位置、速度、温度、压强、动量、动能;
所述的数据输出是指:将网格化后的计算域的状态数组输出至GPU;
所述的状态数组包括:位置、速度、温度、压强、动量、动能。
2.根据权利要求1所述的方法,其特征是,所述的计算流程控制包括:根据给定的并行数对计算域进行划分,给每个进程分配相应的计算域并把数据传输给对应进程;每个进程对各自计算域内的网格初始化,计算网格内部的温度和压强信息。
3.根据权利要求1或2所述的方法,其特征是,具体包括:
步骤1)读入网格文件,边界条件以及参数文件,获取所有网格内的初始状态,包括位置,速度,具体为:读取网格参数文件inputCtrlParameters、网格文件inputmesh.xzy、边界条件BoundaryConditions以及化学反应信息ChemicalResource;
步骤2)根据给定的并行数对计算域进行划分,给每个进程分配相应的计算域并把数据传输给对应进程,具体为:使用metis软件对计算域进行划分,得到包含每个核心负责的计算域的网格信息并重新排序,相邻计算域的重叠网格信息;
步骤3)每个进程对各自计算域内的网格初始化,具体为:每个进程根据分配的网格单元以及面的种类对网格计算网格的体积、温度、压强;给每个网格贴上重新排序的序号,计算每个网格六个面的法向量,并根据面的种类给予不同的标签;
步骤4)进行CPU内存和GPU显存之间的每个网格的状态数组信息传输,具体为:将整个迭代过程需要的所有数据由CPU内存复制到GPU现存,保证数据结构读取和计算的一致性,在GPU计算过程中对数据的访存与CPU一致;
步骤5)计算黏性通量和非黏性通量,计算化学反应数据,根据[I-ha1J(un)]k1=h{f(un)+g(un)}计算第一迭代系数k1;
步骤6)刷新网格状态信息,相邻计算域间进行通信,具体为:将每个计算域内对应的与其他计算域相邻的网格信息收集起来,通过MPI发送给相邻计算域;当接收到相邻计算域的数据后,解开打包并更新到各个重叠网格;在此之后,根据上一步计算的通量重新对每个网格的温度、压强、速度信息进行更新;
步骤7)重新计算黏性通量和非黏性通量,计算化学反应数据,并根据[I-ha2J(un)]k2=h{f(un+b21k1)+g(un+c21k1)}计算第二迭代系数k2;
步骤8)根据un+1=un+ω1k1+ω2k2更新网格状态,当满足稳定条件时输出结果,否则重复步骤5~步骤7,并将GPU数据传回CPU进行I/O输出。
4.根据权利要求3所述的方法,其特征是,所述的网格参数文件包括:网格文件、边界条件文件的路径、参与计算的粒子数量及种类、每类粒子的质量、能量信息以及具体计算的方法与分支,包括:是否打开化学计算反应开关,采用何种方式对网格进行初始化信息;
所述的网格文件是之前划分好的网格信息,包括:整体网格的位置、大小数据,以及以1~6来表示面方向的六面体结构化网格;
所述的边界条件包括:对整体计算域的边界信息,包括边界位置和稳定的边界流速;
所述的化学反应信息以参数中的粒子种类为基础,列出了在模拟过程中可能发生的化学反应信息,具体包括:每个反应的正逆向粒子种类、粒子数量以及反应的平衡常数。
5.根据权利要求3所述的方法,其特征是,所述的网格的面为以下任意一种:a)整体计算域的物理边界、b)核心负责的计算域边界、c)核心负责的计算域内部网格。
6.根据权利要求3所述的方法,其特征是,所述的初始化,进一步对于整体计算域边界上的面,赋予边界的流速温度压强信息;对于计算域内部的数据,根据初始的网格信息进行计算;对于计算域内部边界的面,保持相邻计算域的数据相同,在此之上进行初始化计算。
7.根据权利要求3所述的方法,其特征是,所述的步骤5具体为:根据当前迭代的数据,即网格目前的速度、温度、压强以及面的法向量,求出面通量的大小;通过每个网格对每个面去遍历,因此同一个面只需要计算一次。
8.根据权利要求7所述的方法,其特征是,所述的面通量,对应网格的面的种类,包括:
①当该面为整体计算域的物理边界时,该面的通量为固定的边界状态,不需要计算;
②当该面为计算核心计算域边界时,因为需要的相邻网格并不在本计算域内部,所以每个计算域需要维持相邻计算域边界上的网格信息,并于每次通信时更新;
③该面为计算核心计算域内部面时,先判断该面是否由该网格计算,如果不需要则跳过,如果需要计算则获取相邻网格数据进行计算,计算完成后需要更新到相邻网格的对应面上。
9.一种实现权利要求1或2所述方法的系统,其特征在于,包括:设置于GPU中的迭代计算单元以及设置于CPU中的数据读取单元、数据输出单元以及流程控制单元,其中:迭代计算单元接收网格速度、位置信息,计算网格黏性及非黏性通量,进行线性方程求解得到龙格-库塔方法的两个迭代系数并输出至数据处理单元,数据读取单元根据该迭代系数进行迭代计算更新数据至数据输出单元,对于多处理器系统通过数据输出输入单元进行数据交换,数据输出单元接收网格单元数据并与上一轮数据进行对比,将结果输出至流程控制单元,当两轮迭代数据变化高于设定阈值,则流程控制单元进入新一轮迭代,否则将数据输出至包含位置、速度、压强、温度和动量信息的结果文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011294549.8A CN112380793B (zh) | 2020-11-18 | 2020-11-18 | 基于gpu的湍流燃烧数值模拟并行加速实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011294549.8A CN112380793B (zh) | 2020-11-18 | 2020-11-18 | 基于gpu的湍流燃烧数值模拟并行加速实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112380793A CN112380793A (zh) | 2021-02-19 |
CN112380793B true CN112380793B (zh) | 2024-02-13 |
Family
ID=74584203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011294549.8A Active CN112380793B (zh) | 2020-11-18 | 2020-11-18 | 基于gpu的湍流燃烧数值模拟并行加速实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112380793B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114492230B (zh) * | 2022-01-06 | 2022-08-09 | 中国空气动力研究与发展中心计算空气动力研究所 | 一种飞行器高空气动力曲线的获得方法 |
CN115938494B (zh) * | 2022-11-24 | 2024-01-09 | 中国科学院大气物理研究所 | 气相化学模块的dcu加速计算方法、设备及存储介质 |
CN117408185B (zh) * | 2023-12-13 | 2024-02-23 | 上海交通大学四川研究院 | 基于自动微分加速发动机燃烧室设计的仿真模拟方法 |
CN117573375B (zh) * | 2024-01-15 | 2024-04-02 | 上海交通大学四川研究院 | 一种面向自适应解耦方程的动态负载平衡并行计算方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014094410A1 (zh) * | 2012-12-20 | 2014-06-26 | 中国科学院近代物理研究所 | 颗粒流动仿真系统和方法 |
CN105069184A (zh) * | 2015-07-13 | 2015-11-18 | 中国科学院过程工程研究所 | 一种基于浸入边界法的搅拌反应釜模拟方法 |
CN109857543A (zh) * | 2018-12-21 | 2019-06-07 | 中国地质大学(北京) | 一种基于多节点多gpu计算的流线模拟加速方法 |
CN110275733A (zh) * | 2019-06-27 | 2019-09-24 | 上海交通大学 | 基于有限体积法求解声子玻尔兹曼方程的gpu并行加速方法 |
-
2020
- 2020-11-18 CN CN202011294549.8A patent/CN112380793B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014094410A1 (zh) * | 2012-12-20 | 2014-06-26 | 中国科学院近代物理研究所 | 颗粒流动仿真系统和方法 |
CN105069184A (zh) * | 2015-07-13 | 2015-11-18 | 中国科学院过程工程研究所 | 一种基于浸入边界法的搅拌反应釜模拟方法 |
CN109857543A (zh) * | 2018-12-21 | 2019-06-07 | 中国地质大学(北京) | 一种基于多节点多gpu计算的流线模拟加速方法 |
CN110275733A (zh) * | 2019-06-27 | 2019-09-24 | 上海交通大学 | 基于有限体积法求解声子玻尔兹曼方程的gpu并行加速方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112380793A (zh) | 2021-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112380793B (zh) | 基于gpu的湍流燃烧数值模拟并行加速实现方法 | |
Brandvik et al. | An accelerated 3D Navier–Stokes solver for flows in turbomachines | |
Nouanesengsy et al. | Load-balanced parallel streamline generation on large scale vector fields | |
Kozelkov et al. | Investigation of supercomputer capabilities for the scalable numerical simulation of computational fluid dynamics problems in industrial applications | |
Liang et al. | Solving seven-equation model for compressible two-phase flow using multiple GPUs | |
CN109472361B (zh) | 神经网络优化方法 | |
CN110516316B (zh) | 一种间断伽辽金法求解欧拉方程的gpu加速方法 | |
Dimarco et al. | Towards an ultra efficient kinetic scheme. Part III: High-performance-computing | |
CN112613243A (zh) | 一种流体力学模拟的方法、装置及计算机可读存储介质 | |
Vanka | 2012 Freeman scholar lecture: computational fluid dynamics on graphics processing units | |
Xiang et al. | GPU acceleration of CFD algorithm: HSMAC and SIMPLE | |
CN103530451B (zh) | 复杂介质弹性波传播模拟的多网格切比雪夫并行谱元法 | |
Guy et al. | A multigrid method for a model of the implicit immersed boundary equations | |
Yildirim et al. | A parallel implementation of fluid–solid interaction solver using an immersed boundary method | |
Binotto et al. | Iterative sle solvers over a cpu-gpu platform | |
Kessler et al. | Performance of coupled physics solvers for multidisciplinary hypersonic flow simulations on several classes of computer architectures | |
CN116226587A (zh) | 一种辐射流体力学方程组amg并行优化方法及系统 | |
Feichtinger et al. | WaLBerla: Exploiting massively parallel systems for lattice Boltzmann simulations | |
Tian et al. | Efficient Parallel Dynamic Overset Unstructured Grid for Flow Simulation with Moving Bodies | |
CN107590353A (zh) | 大气紊流场模拟方法和采用knl处理器的服务器的集群 | |
Kozelkov et al. | An efficient parallel implementation of the SIMPLE algorithm based on a multigrid method | |
Emans et al. | Velocity–pressure coupling on GPUs | |
Liu et al. | A combined immersed finite element and conservative semi-Lagrangian scheme for plasma-material interactions | |
Kashi | Asynchronous fine-grain parallel iterative solvers for computational fluid dynamics | |
Powell et al. | Predictive analysis of code optimisations on large-scale coupled cfd-combustion simulations using the cpx mini-app |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |