跨流域空气动力学GPU并行算法--N-S方程高性能计算(精)/跨流域空气动力学丛书
1星价
¥148.5
(7.9折)
2星价¥148.5
定价¥188.0
暂无评论
图文详情
- ISBN:9787030664662
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:296
- 出版时间:2020-11-01
- 条形码:9787030664662 ; 978-7-03-066466-2
内容简介
本书首先介绍GPU技术和CUDA架构的入门知识,并给出了CudaFortran的开发环境配置;然后,通过矢量加法、矢量点积、矩阵乘法等简单示例详细介绍了CUDAFortran语法和使用模式、GPGPU技术编程特点等基础知识;接着,简单介绍了CUDAFortran的调试方法、错误信息分析等;很后,通过多GPU的使用、GPU并行计算在CFD/DSMC等高性能计算中的应用等专题讨论,揭示GPGPU技术在高性能计算中的应用方法和技巧。书中的示例的构思以及分析过程是本书拥有价值的部分,读者通过阅读这些内容,很容易对GPU技术做到融会贯通,举一反三,只要掌握了这些简单的示例,更复杂的问题也能迎刃而解。在本书的帮助下,读者不需熟悉GPU硬件或者CUDAC(虽然熟悉这两者有助于使用本书)就可完成GPU的学习和使用。
目录
目录
第1章 绪论 1
1.1 一个故事:为什么需要并行 1
1.2 并行计算简介 3
1.2.1 机群系统 3
1.2.2 并行计算与多核技术 4
1.2.3 异构计算机 6
1.3 GPU计算与CUDA 9
1.4 CUDA Fortran 14
1.5 GPU并行计算技术与高超声速流动模拟 15
参考文献 19
第2章 CUDA Fortran编译器 24
2.1 PGI Fortran编译器简介 24
2.2 编译CUDA Fortran程序 35
2.2.1 可视化版PGI编译器的使用 35
2.2.2 使用命令行编译程序 43
2.3 Fortran程序驱动GPU 44
2.3.1 GPU算法的CUDA Fortran程序实现 44
2.3.2 在主机与CUDA卡之间传输数据 47
2.3.3 GPU端的计算 48
2.4 错误信息获取 51
参考文献 52
第3章 CUDA线程模型 54
3.1 CUDA并行计算思维 54
3.1.1 并行算法设计 54
3.1.2 SIMD模型 56
3.1.3 SIMT模型 57
3.2 CUDA线程的主要特性 58
3.2.1 子程序属性限定符attributes 58
3.2.2 kernel函数 59
3.3 CUDA线程结构 60
3.3.1 线程block和线程grid 60
3.3.2 block内线程与block间线程 63
3.3.3 CUDA线程与GPU硬件对应关系 63
3.3.4 CUDA线程设计 64
3.4 执行配置 66
3.5 device子程序 74
3.6 自动生成kernel简介 75
3.6.1 !$cuf 基本用法 75
3.6.2 !$cuf 使用注意事项 76
3.7 使用module封装GPU数据与程序 77
3.7.1 用module封装数据 77
3.7.2 用module封装设备端子程序 78
3.8 CUDA线程同步 79
3.9 小结 80
参考文献 81
第4章 CUDA存储模型 82
4.1 GPU设备端变量 82
4.1.1 GPU内存 82
4.1.2 变量限定符 83
4.1.3 变量类型与内存分配 84
4.2 device变量 84
4.3 managed变量 88
4.4 pinned变量 90
4.5 shared变量 93
4.6 local变量 96
4.7 constant变量 96
4.8 texture变量 97
4.9 设备端派生数据类型 98
参考文献 100
第5章 CUDA任务级并行 101
5.1 CUDA流管理 101
5.1.1 什么是流 101
5.1.2 流的创建与销毁 102
5.1.3 流的使用 104
5.1.4 流的用法举例 107
5.2 CUDA事件管理 109
5.2.1 什么是事件 109
5.2.2 事件基本用法 110
5.2.3 事件在任务计时中的应用 111
5.2.4 事件在任务管理中的应用 116
5.3 GPU设备管理 118
5.3.1 设备切换 118
5.3.2 设备参数查询与修改 119
5.3.3 设备端变量存储位置 123
5.3.4 GPU卡间数据通信 124
参考文献 126
第6章 CUDA Fortran程序优化 127
6.1 Fortran程序性能优化一般准则 127
6.2 矩阵乘法CUDA程序优化 130
6.2.1 优化一:使用local变量 132
6.2.2 优化二:使用shared变量 132
6.2.3 kernel的调用 135
6.3 线程block优化设计 136
6.3.1 GPU微架构与CUDA线程模型 136
6.3.2 线程block设计 140
6.3.3 local内存使用技巧 142
参考文献 143
第7章 高超声速流场数学模型 144
7.1 高超声速绕流流场问题描述 144
7.2 控制方程 145
7.3 组分热力学特性 148
7.3.1 统计热力学方法 148
7.3.2 拟合函数法 149
7.4 组分输运特性 150
7.4.1 黏性系数 150
7.4.2 热传导系数 151
7.4.3 扩散系数 151
7.4.4 混合气体输运特性 152
7.5 化学动力学模型 152
7.5.1 纯空气化学反应 152
7.5.2 化学反应源项 153
7.5.3 化学反应速率系数 154
7.6 N-S方程空间离散 155
7.6.1 定解条件 156
7.6.2 有限体积方法 158
7.6.3 差分格式 158
7.6.4 通量分裂 159
7.6.5 高阶迎风型格式 161
7.6.6 高维问题 163
7.7 时间迭代 165
7.7.1 显式方法 165
7.7.2 隐式方法 167
7.8 边界条件 170
7.8.1 虚拟网格法 171
7.8.2 物理边界条件处理方法 171
7.8.3 壁面催化 174
参考文献 174
第8章 N-S方程并行算法 177
8.1 并行计算术语 177
8.2 MPI并行环境 179
8.2.1 MPI进程级并行计算 179
8.2.2 MPI程序编译与运行 180
8.2.3 并行进程的创建与回收 181
8.2.4 MPI通信 182
8.2.5 非阻塞通信 186
8.2.6 组通信 188
8.2.7 MPI高级话题 189
8.3 流场区域分解的N-S方程并行算法 192
8.3.1 高超声速流场的N-S方程数值求解 192
8.3.2 流场并行算法 194
8.3.3 流场并行算法优化 195
8.4 结构网格N-S方程并行计算负载均衡 198
8.4.1 并行计算负载估算 198
8.4.2 LPT负载分配 199
8.4.3 区域分解对CFD效率的影响 200
8.4.4 结构网格块二次剖分算法 202
8.5 N-S方程数值求解大规模高性能并行计算验证 206
8.5.1 高超声速流场计算软件HAS简介 206
8.5.2 双椭球模型风洞实验流场计算 206
8.5.3 Apollo指令舱高超声速绕流计算 209
8.5.4 高超声速圆柱绕流大规模并行计算 211
参考文献 212
第9章 N-S方程求解的GPU异构并行算法 214
9.1 数据依赖关系 214
9.1.1 数据依赖性分析 214
9.1.2 无数据依赖隐式算法 215
9.2 CFD功能模块kernel设计 220
9.2.1 无黏项空间离散 221
9.2.2 流场参数空间梯度计算 228
9.2.3 黏性项空间离散 231
9.2.4 DPLUR隐式计算模块 231
9.2.5 其他模块 233
9.3 边界条件处理技术 234
9.3.1 适于CUDA线程的边界网格单元分配方法 235
9.3.2 对接边界数据交换 236
9.4 CFD功能模块kernel调用 237
9.4.1 线程block与grid设计 237
9.4.2 CUDA任务级并行 239
9.4.3 多GPU设备问题 241
9.4.4 提升GPU并行计算效率的辅助措施 242
9.5 数据结构 246
9.5.1 GPU设备数据存储策略 246
9.5.2 常量数据定义 246
9.5.3 边界条件数据结构 248
9.5.4 网格块数据结构 249
9.6 CUDA算法的可靠性 251
9.6.1 确保GPU异构并行CFD算法可靠性的基本方法 251
9.6.2 算例验证 252
参考文献 260
附录A 纯空气化学非平衡模型相关常数 262
附录B N-S方程及其无黏通量特征分裂 271
B.1 N-S方程无量纲化 271
B.2 雅可比矩阵及其特征值 272
B.3 以特征值表达的雅可比矩阵 274
B.4 以特征值表达的无黏通量 276
B.5 无黏通量Van Leer分裂表达式 276
附录C 化学源项及黏性通量雅可比矩阵 278
C.1 化学源项雅可比矩阵 278
C.2 黏性通量雅可比矩阵及其分裂 279
附录D 结构网格半自动生成工具AutoMesh 283
第1章 绪论 1
1.1 一个故事:为什么需要并行 1
1.2 并行计算简介 3
1.2.1 机群系统 3
1.2.2 并行计算与多核技术 4
1.2.3 异构计算机 6
1.3 GPU计算与CUDA 9
1.4 CUDA Fortran 14
1.5 GPU并行计算技术与高超声速流动模拟 15
参考文献 19
第2章 CUDA Fortran编译器 24
2.1 PGI Fortran编译器简介 24
2.2 编译CUDA Fortran程序 35
2.2.1 可视化版PGI编译器的使用 35
2.2.2 使用命令行编译程序 43
2.3 Fortran程序驱动GPU 44
2.3.1 GPU算法的CUDA Fortran程序实现 44
2.3.2 在主机与CUDA卡之间传输数据 47
2.3.3 GPU端的计算 48
2.4 错误信息获取 51
参考文献 52
第3章 CUDA线程模型 54
3.1 CUDA并行计算思维 54
3.1.1 并行算法设计 54
3.1.2 SIMD模型 56
3.1.3 SIMT模型 57
3.2 CUDA线程的主要特性 58
3.2.1 子程序属性限定符attributes 58
3.2.2 kernel函数 59
3.3 CUDA线程结构 60
3.3.1 线程block和线程grid 60
3.3.2 block内线程与block间线程 63
3.3.3 CUDA线程与GPU硬件对应关系 63
3.3.4 CUDA线程设计 64
3.4 执行配置 66
3.5 device子程序 74
3.6 自动生成kernel简介 75
3.6.1 !$cuf 基本用法 75
3.6.2 !$cuf 使用注意事项 76
3.7 使用module封装GPU数据与程序 77
3.7.1 用module封装数据 77
3.7.2 用module封装设备端子程序 78
3.8 CUDA线程同步 79
3.9 小结 80
参考文献 81
第4章 CUDA存储模型 82
4.1 GPU设备端变量 82
4.1.1 GPU内存 82
4.1.2 变量限定符 83
4.1.3 变量类型与内存分配 84
4.2 device变量 84
4.3 managed变量 88
4.4 pinned变量 90
4.5 shared变量 93
4.6 local变量 96
4.7 constant变量 96
4.8 texture变量 97
4.9 设备端派生数据类型 98
参考文献 100
第5章 CUDA任务级并行 101
5.1 CUDA流管理 101
5.1.1 什么是流 101
5.1.2 流的创建与销毁 102
5.1.3 流的使用 104
5.1.4 流的用法举例 107
5.2 CUDA事件管理 109
5.2.1 什么是事件 109
5.2.2 事件基本用法 110
5.2.3 事件在任务计时中的应用 111
5.2.4 事件在任务管理中的应用 116
5.3 GPU设备管理 118
5.3.1 设备切换 118
5.3.2 设备参数查询与修改 119
5.3.3 设备端变量存储位置 123
5.3.4 GPU卡间数据通信 124
参考文献 126
第6章 CUDA Fortran程序优化 127
6.1 Fortran程序性能优化一般准则 127
6.2 矩阵乘法CUDA程序优化 130
6.2.1 优化一:使用local变量 132
6.2.2 优化二:使用shared变量 132
6.2.3 kernel的调用 135
6.3 线程block优化设计 136
6.3.1 GPU微架构与CUDA线程模型 136
6.3.2 线程block设计 140
6.3.3 local内存使用技巧 142
参考文献 143
第7章 高超声速流场数学模型 144
7.1 高超声速绕流流场问题描述 144
7.2 控制方程 145
7.3 组分热力学特性 148
7.3.1 统计热力学方法 148
7.3.2 拟合函数法 149
7.4 组分输运特性 150
7.4.1 黏性系数 150
7.4.2 热传导系数 151
7.4.3 扩散系数 151
7.4.4 混合气体输运特性 152
7.5 化学动力学模型 152
7.5.1 纯空气化学反应 152
7.5.2 化学反应源项 153
7.5.3 化学反应速率系数 154
7.6 N-S方程空间离散 155
7.6.1 定解条件 156
7.6.2 有限体积方法 158
7.6.3 差分格式 158
7.6.4 通量分裂 159
7.6.5 高阶迎风型格式 161
7.6.6 高维问题 163
7.7 时间迭代 165
7.7.1 显式方法 165
7.7.2 隐式方法 167
7.8 边界条件 170
7.8.1 虚拟网格法 171
7.8.2 物理边界条件处理方法 171
7.8.3 壁面催化 174
参考文献 174
第8章 N-S方程并行算法 177
8.1 并行计算术语 177
8.2 MPI并行环境 179
8.2.1 MPI进程级并行计算 179
8.2.2 MPI程序编译与运行 180
8.2.3 并行进程的创建与回收 181
8.2.4 MPI通信 182
8.2.5 非阻塞通信 186
8.2.6 组通信 188
8.2.7 MPI高级话题 189
8.3 流场区域分解的N-S方程并行算法 192
8.3.1 高超声速流场的N-S方程数值求解 192
8.3.2 流场并行算法 194
8.3.3 流场并行算法优化 195
8.4 结构网格N-S方程并行计算负载均衡 198
8.4.1 并行计算负载估算 198
8.4.2 LPT负载分配 199
8.4.3 区域分解对CFD效率的影响 200
8.4.4 结构网格块二次剖分算法 202
8.5 N-S方程数值求解大规模高性能并行计算验证 206
8.5.1 高超声速流场计算软件HAS简介 206
8.5.2 双椭球模型风洞实验流场计算 206
8.5.3 Apollo指令舱高超声速绕流计算 209
8.5.4 高超声速圆柱绕流大规模并行计算 211
参考文献 212
第9章 N-S方程求解的GPU异构并行算法 214
9.1 数据依赖关系 214
9.1.1 数据依赖性分析 214
9.1.2 无数据依赖隐式算法 215
9.2 CFD功能模块kernel设计 220
9.2.1 无黏项空间离散 221
9.2.2 流场参数空间梯度计算 228
9.2.3 黏性项空间离散 231
9.2.4 DPLUR隐式计算模块 231
9.2.5 其他模块 233
9.3 边界条件处理技术 234
9.3.1 适于CUDA线程的边界网格单元分配方法 235
9.3.2 对接边界数据交换 236
9.4 CFD功能模块kernel调用 237
9.4.1 线程block与grid设计 237
9.4.2 CUDA任务级并行 239
9.4.3 多GPU设备问题 241
9.4.4 提升GPU并行计算效率的辅助措施 242
9.5 数据结构 246
9.5.1 GPU设备数据存储策略 246
9.5.2 常量数据定义 246
9.5.3 边界条件数据结构 248
9.5.4 网格块数据结构 249
9.6 CUDA算法的可靠性 251
9.6.1 确保GPU异构并行CFD算法可靠性的基本方法 251
9.6.2 算例验证 252
参考文献 260
附录A 纯空气化学非平衡模型相关常数 262
附录B N-S方程及其无黏通量特征分裂 271
B.1 N-S方程无量纲化 271
B.2 雅可比矩阵及其特征值 272
B.3 以特征值表达的雅可比矩阵 274
B.4 以特征值表达的无黏通量 276
B.5 无黏通量Van Leer分裂表达式 276
附录C 化学源项及黏性通量雅可比矩阵 278
C.1 化学源项雅可比矩阵 278
C.2 黏性通量雅可比矩阵及其分裂 279
附录D 结构网格半自动生成工具AutoMesh 283
展开全部
本类五星书
本类畅销
-
勒维特之星-大发现系列丛书
¥4.0¥16.0 -
喜马拉雅山珍稀鸟类图鉴
¥27.2¥68.0 -
昆虫的生存之道
¥12.2¥38.0 -
昆虫采集制作及主要目科简易识别手册
¥15.0¥50.0 -
古文诗词中的地球与环境事件
¥8.7¥28.0 -
声音简史
¥21.3¥52.0 -
不匹配的一对:动物王国的性别文化
¥16.7¥42.8 -
物理学之美-插图珍藏版
¥20.7¥69.0 -
现代物理学的概念和理论
¥18.4¥68.0 -
技术史入门
¥14.4¥48.0 -
几何原本
¥35.6¥93.6 -
改变世界的发现
¥15.4¥48.0 -
图说相对论(32开平装)
¥13.8¥46.0 -
数学的魅力;初等数学概念演绎
¥7.7¥22.0 -
星空探奇
¥14.0¥39.0 -
宇宙与人
¥10.5¥35.0 -
数学专题讲座
¥13.3¥29.0 -
袁隆平口述自传
¥19.9¥51.0 -
为了人人晓得相对论
¥3.9¥13.5 -
一代神话:哥本哈根学派
¥8.1¥15.5