当前位置:文档之家› 大规模CFD高效CPU-GPU异构并行计算关键技术研究

大规模CFD高效CPU-GPU异构并行计算关键技术研究

目录

摘要 (i)

ABSTRACT (iii)

第一章绪论 (1)

1.1研究背景及意义 (1)

1.1.1CFD简介 (1)

1.1.2CFD高性能计算的需求和挑战 (2)

1.1.3CPU/GPU异构计算系统带来的机遇 (4)

1.1.4CFD异构并行计算所遇到的挑战 (6)

1.1.5研究意义 (7)

1.2国内外相关研究现状 (7)

1.2.1CFD发展研究 (7)

1.2.2CPU/GPU异构环境下CFD应用映射和优化研究 (10)

1.3研究内容 (15)

1.3.1主要研究内容及创新 (15)

1.3.2论文结构 (17)

第二章相关背景技术介绍 (19)

2.1空气动力学控制方程及离散格式 (19)

2.1.1传统Navier-Stokes方程及离散格式 (19)

2.1.2格子Boltzmann方程及离散格式 (23)

2.2GPU体系结构 (27)

2.2.1GPU体系结构发展历程 (27)

2.2.2当前主流GPU体系结构 (29)

2.3GPU编程语言发展及CUDA并行编程模型 (33)

2.3.1GPU编程语言发展 (33)

2.3.2CUDA并行编程模型 (35)

2.4小结 (38)

第三章面向多区块结构网格CFD应用的混合异构协同编程框架 (39)

3.1异构并行计算机体系结构特点 (39)

3.2多区块结构网格CFD并行计算特点 (41)

3.3异构并行计算协同编程框架 (42)

3.3.1三层混合异构协同并行编程框架 (43)

3.3.2TLCF框架的实现 (43)

3.3.3异构协同并行编程框架对CFD应用的适用性 (47)

3.4小结 (50)

第四章格子Boltzmann方程大规模高效异构协同并行计算 (51)

4.1引言 (51)

4.2相关工作 (51)

4.3LBM在单GPU上的并行算法 (52)

4.3.1碰撞过程的GPU并行算法 (53)

4.3.2迁移过程的GPU并行算法 (55)

4.3.3边界处理的GPU并行算法 (58)

4.4LBM在CPU/GPU异构系统上的并行算法 (60)

4.4.1基本并行LBM-Base算法 (60)

4.4.2通信与计算重叠并行LBM-overlap算法 (61)

4.4.3CPU/GPU协同并行LBM-hybrid算法 (64)

4.5算法分析 (65)

4.5.1LBM在单GPU上并行算法分析与比较 (65)

4.5.2LBM在CPU/GPU异构系统上并行算法分析与比较 (69)

4.6实验结果 (70)

4.6.1数值验证 (70)

4.6.2单GPU并行方法测试结果 (71)

4.6.3多GPU并行方法测试结果 (73)

4.7小结 (74)

第五章高精度多区块结构网格Navier-Stokes方程高效异构协同并行计算 (77)

5.1引言 (77)

5.2相关工作 (77)

5.2.1高阶精度格式概况 (77)

5.2.2高阶精度格式在异构体系结构上的应用 (79)

5.2.3HOSTA程序 (80)

5.3Navier-Stokes方程在单GPU上并行算法 (82)

5.4Navier-Stokes方程的CPU/GPU协同并行算法 (84)

5.4.1协同并行算法的存储优化 (85)

5.4.2协同并行算法的通信优化 (89)

5.5实现以及实验结果 (90)

5.5.1并行实现 (90)

5.5.2数值实验 (91)

5.5.3单GPU性能结果 (91)

5.5.4单计算节点性能结果 (92)

5.5.5多计算节点性能结果 (93)

5.6小结 (95)

第六章异构系统上CFD计算的负载均衡策略研究 (97)

6.1引言 (97)

6.2粗粒度负载均衡 (98)

6.2.1相关研究 (98)

6.2.2基于性能模型的静态负载均衡 (100)

6.2.3基于预取的任务窃取动态负载均衡 (103)

6.2.4实验结果 (105)

6.3细粒度负载均衡 (109)

6.3.1相关研究 (110)

6.3.2基于稀疏矩阵存储格式的细粒度负载均衡 (111)

6.3.3实验结果 (114)

6.4小结 (116)

第七章结论及展望 (119)

7.1工作总结 (119)

7.2研究展望 (120)

致谢 (123)

参考文献 (125)

作者在学期间取得的学术成果 (143)

主要参研项目 (145)

国防科学技术大学研究生院博士学位论文

表目录

表1.1湍流计算对存储能力和计算能力需求 (3)

表1.2Top500超级计算机性能信息 (6)

表4.1Tianhe-1A超级计算机软硬件环境 (71)

表4.2平台1下AS算法和AD算法的性能结果 (72)

表4.3平台2下AS算法和AD算法的性能结果 (74)

表6.1静态负载均衡所用参数值 (107)

表6.2SpMV性能测试所用矩阵的特征 (114)

图目录

图1.1波音公司研发过程中风洞与CFD作用对比 (2)

图1.2风洞实验运行时长变化 (2)

图1.3未来CFD所需计算能力和可用计算能力预测 (3)

图1.4CPU与GPU计算与控制资源对比 (5)

图1.5CPU与GPU浮点运算峰值性能对比 (5)

图1.6CPU与GPU访存带宽对比 (5)

图1.7二维非结构网格示例 (9)

图1.8二维结构网格示例 (9)

图1.9高性能应用领域在GPU上的应用及结果 (11)

图1.10本文研究内容的组织结构 (17)

图2.1D2Q9和D3Q15速度模型示意图 (25)

图2.2GPU渲染流水线 (27)

图2.3统一渲染架构 (29)

图2.4AMD R600体系结构 (30)

图2.5NVIDIA Tesla体系架构 (31)

图2.6NVIDIA Fermi体系架构 (32)

图2.7Fermi流多处理器架构 (33)

图2.8CUDA编程模型 (35)

图2.9CUDA存储层次模型 (37)

图3.1Tianhe-1A超级计算机系统结构 (40)

图3.2多区结构网格求解步骤 (42)

图3.3TLCF编程框架与异构系统、CFD应用的对应关系 (43)

图3.4MPI编程模型 (44)

图3.5共享存储模型 (45)

图3.6OpenMP编程模型 (45)

图3.7MPI+OpenMP编程模型 (46)

图3.8NOMP-TLCF协作编程框架 (48)

图3.9OMPAE-TLCF协作编程框架 (48)

图3.10MPIAE-TLCF协作编程框架 (49)

图4.1LBM碰撞迁移过程 (52)

图4.2D2Q9速度模型下的碰撞迁移示意图 (53)

图4.3AOS存储方式下的访存示意图 (55)

图4.4SOA存储方式下的访存示意图 (55)

图4.5LBM中虚拟网格及边界数据迁移示意图 (56)

图4.6LBM迁移过程中非合并访存示意图 (57)

图4.7AS算法过程 (57)

图4.8AD算法过程 (58)

图4.9扩展虚拟网格后线程访存地址 (59)

图4.10LBM-Base数据划分方式 (61)

图4.11LBM-Base算法运行时间示意图 (61)

图4.12LBM-Overlap数据划分方式 (63)

图4.13LBM-Overlap算法运行时间示意图 (64)

图4.14LBM-hybrid数据划分方式 (65)

图4.15LBM-Hybrid算法运行时间示意图 (65)

图4.16二维方腔流示意图 (70)

图4.17X方向流速剖面图 (71)

图4.18Y方向流速剖面图 (71)

图4.19LBM弱扩展性能 (75)

图5.1HostA程序求解过程 (81)

图5.2Ghost节点示意图 (81)

图5.3谱半径计算时GPU线程组织方式 (83)

图5.4无粘通量项的GPU计算方法 (84)

图5.5采用流和异步执行方式时运行时间轴 (85)

图5.6采用out-of-core方法时运行时间轴 (87)

图5.7BBD数据传输方式 (89)

图5.8BAD数据传输方式 (89)

图5.9TCBO策略中数据计算及传输示意图 (90)

图5.10TCBL策略中数据计算及传输示意图 (90)

图5.11NACA0012翼型表面网格 (92)

图5.12平均残差、最大残差vs.迭代次数 (92)

图5.13NACA0012翼型表面压力云图 (92)

图5.14单个GPU上N-S方程求解器性能对比 (93)

图5.15单个计算节点上不同分组数时N-S方程求解器性能 (94)

图5.16Navier-Stokes求解器强扩展性测试加速比 (94)

图5.17Navier-Stokes求解器弱扩展性测试并行效率 (95)

图6.1GPU-CPU数据传输及缓存示意图 (101)

图6.2任务队列数据结构 (104)

图6.3两种静态负载划分方式下的性能对比 (108)

图6.4三种负载划分方式在128×128×12832个区块网格上的性能对比 (108)

图6.5三种负载划分方式在128×128×12864个区块网格上的性能对比 (108)

图6.6三种负载划分方式在256×128×12864个区块网格上的性能对比 (109)

图6.7三种负载划分方式在128×128×128128个区块网格上的性能对比.109图6.8采用ELLPACK-R格式时GPU相比CPU所获得的加速比 (115)

图6.9采用ELLPACK-RP格式时GPU相比CPU所获得的加速比 (115)

图6.10两种存储格式下SpMV性能对比 (116)

国防科学技术大学研究生院博士学位论文

摘要

计算流体力学(Computational Fluid Dynamics,CFD)采用数值计算方法求解流动控制方程以发现各种流动现象和规律,已广泛应用于航空航天等领域。随着数值模拟的几何外形、物理模型日益复杂,流动机理研究越来越精细,CFD计算的规模和复杂度空前增长,迫切需要利用高性能计算机实现高效CFD并行计算以提升CFD应用效率。

近年来,随着图像处理器(Graphics Processing Unit,GPU)浮点运算性能和可编程性的提升,采用CPU/GPU异构体系结构成为构造高性能计算机系统的一种趋势。尽管异构体系结构能够在兼顾通用性和效能的同时大幅提升系统性能,但复杂的硬件架构要求研究者综合利用多种编程模型以挖掘多层次并行性,对高效CFD并行应用开发带来了极大的挑战。

本文面向CPU/GPU异构体系结构和典型CFD应用,围绕大规模、高效CFD 异构协同并行计算关键技术开展研究,重点研究了CFD应用异构协同并行编程框架、并行算法和性能优化、负载均衡等问题。论文的工作包括:

(1)针对多区块结构网格CFD计算的特点,提出了适应大型CPU/GPU异构系统的TLCF三层异构协同编程框架。综合MPI、OpenMP和CUDA编程模型,给出了TLCF框架的三种实例:嵌套OpenMP的TLCF框架(NOMP-TLCF)、OpenMP异步执行的TLCF框架(OMPAE-TLCF)以及MPI异步执行的TLCF框架(MPIAE-TLCF)。通过分析这三种编程框架的优缺点,发现NOMP-TLCF编程框架更适用于大规模异构并行系统上CFD应用的开发。

(2)针对计算流体力学中格子Boltzmann方程的求解,研究其在CPU/GPU 异构并行系统上的并行算法。首先,针对算法中的碰撞、迁移及边界处理过程,构建了基于网格单元映射的单GPU并行方法;在传统的依赖共享存储(AS)算法基础上,提出直接存储(AD)算法以适应单GPU访存方式的发展。然后,根据CPU和GPU的协同方式及通信与计算重叠的程度,分别提出了基本并行LBM-base算法、通信与计算重叠并行LBM-overlap算法、CPU/GPU协同计算并行LBM-hybrid算法。算法性能的理论分析和测试结果表明,相对AS算法,AD 算法能采用更多线程配置,获得更好性能。相对于两个6核CPU,格子Boltzmann 方法在单GPU上可获得17倍的性能加速比。多计算节点的并行性能测试结果显示,相对于单个计算节点,性能最好的LBM-hybrid并行算法在128个计算节点上能获得82.0%并行效率。

第i页

万方数据

相关主题
文本预览
相关文档 最新文档