一种利用GPU加速格子-Boltzmann的方法

文档序号:6366191阅读:386来源:国知局
专利名称:一种利用GPU加速格子-Boltzmann的方法
技术领域
本发明涉及 计算机高性能计算领域、计算流体力学领域,具体涉及一种利用NVIDIA的GPU加速格子-Boltzmann的方法。
背景技术
格子Boltzmann 方法(Lattice Boltzmann Method, LBM)在过去的 20 年里已经发展成为一种有效的数值模拟方法,它是介于微观分子动力学方法和基于连续介质假设的宏观方法之间的一种介观方法。该方法与传统的流体模拟方法不同,它基于分子动理论,通过跟踪粒子分布函数的输运而后对分布函数求矩来获得宏观平均特性。格子Boltzmann方法的动理论特性使得它在模拟许多复杂流动的时候更有效,如多孔介质流动、悬浮流、多相流、多组分流等。格子Boltzmann方法具有天生的并行特性,以及边界处理简单、程序易于实施等优点。采用LBM方法求解物理问题时的基本过程如图I所示。对于一个特定的物理问题,首先进行辅助步骤
1)基于各种简化假设,进行物理建模,确定出计算区域、初始条件以及边界条件等,并根据物理问题的不同,选择相应的格子Boltzmann模型;
2)进行网格划分,假设网格划分大小为NX*NY;
3)根据不同格子Boltzmann模型,选择控制方程,并对其进行离散。如采用标准格子Boltzmann方法对等温不可压缩流动进行模拟,则离散后的控制方程为LBGK方程;
前面这3步是在数值模拟之前就进行的。随后进入数值模拟阶段
4)根据物理问题,给定所有格点上的宏观参量(密度、速度、黏性系数等),并由此计算出所有格点上各个方向的平衡态分布函数,以此作为计算的初场;
5)求解离散后的控制方程,例如,采用迁移碰撞规则求解LBGK方程;
6)根据边界条件,在相应边界格点上实施边界处理格式;
7)基于不同格子Boltzmann模型的宏观量的定义法则,计算各格点上的宏观参量;
8)判断计算是否收敛;
9)若计算收敛,则输出计算结果;否则返回第4步,继续求解,直到收敛为止。广泛应用的格子-Boltzmann单松弛时间近似BGK模型基于如下的演化方程
(i*31) = st./ (x)[1 + 3 'tt + 4.5( 'ii)2 — 1.5(M)2]
这里,为粒子分布函数,代表时间t,在处存在以微观速度运动的粒子的概率。松
弛时间!■代表达到局部平衡的速率,与流体的动粘性系数相关。平衡分布函数if是
Maxwe 11-Bo Itzmann方程的低马赫数近似,取决于流体的密度和流动速度。它们之间的关系由下式决定
/Tihy =3 f+ 4S{^rE)2 -1^(63]其中,在D2Q9模型中
权利要求
1.一种利用GPU加速格子-Boltzmann的方法,其特征在于,将基本参数初始化计算放在CPU端执行,而把平衡分布函数计算、宏观量统计、离散方程求解和边界处理部分利用CUDA技术进行并行化改造,使其在GPU端并行执行,CPU与GPU进行协同计算,最终实现加速格子Boltzmann方法,包括以下步骤 1)定位格子Boltzmann方法的性能瓶颈; 利用LBM进行流体模拟时,最耗时的计算部分为求解离散方程和边界处理的过程,该过程占据了整个模拟的绝大部分时间,其它部分几乎不耗时,因此,求解离散方程和边界处理的迭代过程是LBM中的性能瓶颈; 2)并行性分析; 根据对LBM算法中求解离散方程和边界处理的串行算法的分析,每个网格点的迁移、碰撞、宏观量统计、平衡态分布函数计算和边界处理的计算都是数据并行的; 3)求解离散方程和边界处理的CUDA并行化改造; a)求解离散方程可以采用迁移碰撞的过程,宏观量统计、平衡态分布函数计算和碰撞过程中对每个网格的计算之间没有任何依赖性,因此,可以让CUDA中的每个线程负责一个网格划分中的格点的计算,网格划分中的总格点数即为总的线程数;分布函数的迁移只涉及到该格点周围的其他格点,也可以通过单个线程对全局存储器中相关分布函数的读操作来实现; b)在LBM算法中,对边界要做特殊的处理,包括非平衡外推,反弹,对于边界上的每个格点之间的计算也没有数据的依赖性,因此,也可以让每个线程负责一个格点的计算; c)CUDA的线程模型设计根据GPU存储器的访问特点、GPU的寄存器资源及并行算法来设计CUDA的线程模型,确定总线程数和总线程块数; d)求解离散方程和边界处理的GPU内核代码编写。
全文摘要
本发明提供了一种利用GPU加速格子-Boltzmann的方法,涉及主机端的CPU和设备端的GPU。该方法包括主机端根据物理问题,给定计算域、参考长度、来流速度、密度和雷诺数等参数,并根据网格划分设计内核的线程数;设备端通过这些宏观参量(密度、速度、雷诺数和黏性系数等)计算出所有格点上各个方向的平衡态分布函数,以此作为计算的初场,并行求解离散方程和处理边界,并把最终迭代得到的结果回传到主机端。本发明利用GPU设备端快速计算的特点参与对格子-Boltzmann中的迁移和碰撞的计算,通过CPU主机端和GPU设备端的协调运作加速格子-Boltzmann的迭代过程。
文档编号G06F15/16GK102681972SQ20121012897
公开日2012年9月19日 申请日期2012年4月28日 优先权日2012年4月28日
发明者姚皆可, 张广勇, 张清, 李凯, 李勤俭, 赵开勇, 钟诚文 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1