书籍详情
混合架构超算并行程序设计与应用
作者:储根深
出版社:电子工业出版社
出版时间:2023-02-01
ISBN:9787121451546
定价:¥52.00
购买这本书可以去
内容简介
本书面向国产E级超算的体系结构和高性能计算领域,关注近年来出现的新超算硬件和新软件技术(如神威E级超算编程模式、DCU编程模式)。本书涵盖神威、曙光等超算的硬件架构与编程方法,深度结合国产超算体系结构特点,以实例的形式探讨异构超算上的高性能算法设计、优化技术及高性能软件的开发和优化方法。本书可作为高等院校计算机科学与技术、软件工程等专业本科生或研究生的教材,使其在掌握通用计算机程序设计的基础上,进一步提升在该领域的理论知识水平和程序优化实践技能,也可作为从事高性能计算和体系结构研究的科研工作者与工程技术人员的参考资料,同时也能为关注高性能计算与超算技术发展的读者提供有益参考。
作者简介
储根深,工学博士,长期从事面向国产超算异构混合架构的基础数学库、大规模并行算法、高性能科学计算软件与性能优化研究。主导开发了MISA-MD、MISA-AKMC等大型材料计算软件,在神威超算实现万亿粒子规模的MD模拟世界纪录。核心参与国家重点研发、国家自然科学基金等项目近10项。发表SCI/EI高水平论文10余篇、申请发明专利10余项。
目录
第1章 绪论 1
1.1 高性能计算应用需求和意义 1
1.2 混合架构超算发展趋势 2
1.3 如何进行异构混合架构上的程序设计 2
1.4 本书的内容和安排 3
第2章 异构混合架构概述 5
2.1 国际国内超算现状 5
2.1.1 超算发展历程 6
2.1.2 超算发展现状 8
2.1.3 我国超算发展现状 12
2.2 典型的混合架构计算机 13
2.2.1 CPU+GPU架构:以Frontier、Summit、Aurora为代表 13
2.2.2 ARM架构:日本富岳 16
2.2.3 CPU+DCU:曙光超算 17
2.2.4 神威主从核架构:新一代神威超算 18
2.2.5 新一代天河超算 19
2.3 混合架构程序设计语言与框架概述 22
2.3.1 OpenMP 22
2.3.2 MPI 23
2.3.3 CUDA/HIP 24
2.3.4 OpenACC 25
2.3.5 Athread 26
2.3.6 OpenCL 27
2.3.7 oneAPI 28
习题 29
参考文献 30
第3章 异构混合架构性能分析理论 31
3.1 并行程序的时间开销 31
3.2 相对性能 31
3.3 绝对性能 36
3.4 性能瓶颈 37
3.4.1 计算密度 37
3.4.2 访存密集与计算密集 38
3.4.3 roofline性能模型 38
3.4.4 roofline分析示例:SpMV 39
习题 41
参考文献 42
第4章 CPU高性能程序设计 43
4.1 内存模型与OpenMP、MPI并行编程方法 43
4.2 OpenMP并行编程简介 44
4.2.1 OpenMP的Hello World 45
4.2.2 编译制导指令 47
4.2.3 运行时库函数 49
4.2.4 环境变量 49
4.2.5 OpenMP offload 49
4.3 MPI并行编程简介 50
4.3.1 MPI基本函数 50
4.3.2 MPI通信模式 55
4.4 SIMD向量化 60
4.4.1 CPU向量化指令集发展 60
4.4.2 向量化编程实践 61
4.5 性能分析工具 65
4.5.1 perf工具 65
4.5.2 gprof工具 69
4.5.3 IPM工具 70
4.5.4 Score-P工具 73
习题 76
第5章 神威异构众核程序设计 77
5.1 神威超算及编程环境概述 77
5.1.1 神威超算的背景及历史 77
5.1.2 神威?太湖之光超算架构 78
5.1.3 新一代神威超算架构 80
5.1.4 神威编程环境 81
5.1.5 访存层次 84
5.2 神威众核编程 85
5.2.1 众核程序结构 85
5.2.2 从核函数 86
5.2.3 第一个并行程序 87
5.2.4 示例:stencil计算优化 92
5.3 神威SIMD 96
5.3.1 SIMD简介 96
5.3.2 SIMD示例 100
习题 101
第6章 面向DCU架构的程序设计与优化 102
6.1 曙光超算及编程环境概述 102
6.1.1 曙光超算简介 102
6.1.2 曙光超算节点架构 102
6.1.3 ROCm/DTK编程环境 111
6.2 HIP编程方法 112
6.2.1 HIP与CUDA 112
6.2.2 曙光DCU编程模型 113
6.2.3 HIP编程 114
6.3 利用LDS进行数据共享 127
6.3.1 LDS概念 127
6.3.2 LDS使用实例 129
6.4 线程间通信 134
6.4.1 Block级线程通信 134
6.4.2 wavefront级线程通信 135
6.5 reduce优化 138
习题 148
第7章 异构混合架构上的算法设计 149
7.1 DCU上的前缀和 149
7.1.1 Prefix Sum简介 149
7.1.2 并行难点 150
7.1.3 wavefront Scan算法 152
7.1.4 Block Scan算法 154
7.1.5 全局Scan算法 155
7.1.6 更高效的Scan算法 157
7.2 通用矩阵乘 157
7.2.1 GEMM简介 157
7.2.2 并行难点 158
7.2.3 面向DCU的GEMM优化 158
7.2.4 BENCHMARK 163
7.3 DCU上的稀疏矩阵向量乘 164
7.3.1 概述 164
7.3.2 稀疏矩阵CSR存储格式 164
7.3.3 并行难点 164
7.3.4 高效SpMV算法实现 166
习题 170
第8章 异构混合架构常用算法库 172
8.1 算法库介绍 172
8.1.1 常见算法库层次 172
8.1.2 国内外典型超算上的算法库 172
8.2 稠密矩阵计算库:rocBLAS、cuBLAS、swBLAS 173
8.2.1 BLAS接口介绍 173
8.2.2 rocBLAS 177
8.2.3 cuBLAS 181
8.3 稀疏矩阵计算库:rocSPARSE、cuSPARSE、swSPARSE 182
8.3.1 常用的稀疏矩阵的存储格式 182
8.3.2 rocSPARSE 185
8.3.3 cuSPARSE 190
8.3.4 swSPARSE 192
8.4 LAPACK线性代数计算库:特征值、LU 195
8.4.1 LAPACK介绍 195
8.4.2 rocSOLVER 196
8.4.3 cuSOLVER 199
8.5 线性方程组求解 201
8.5.1 常用的求解算法 201
8.5.2 PETSc的层次架构 202
习题 209
第9章 异构混合架构上并行应用程序开发示例 210
9.1 MISA-MD分子动力学模拟程序异构优化 210
9.1.1 分子动力学模拟概述 210
9.1.2 面向DCU的MD优化的挑战性及优化思路 211
9.1.3 主机-设备间通信及其优化 211
9.1.4 并行计算策略 214
9.1.5 其他访存优化技术 215
9.2 SUMMER-CD 216
9.2.1 软件介绍 216
9.2.2 物理模型 216
9.2.3 三层并行模型 218
9.2.4 自适应异构数据传输 221
9.2.5 基于Stream的计算通信重叠 223
9.3 有限体积法求解圣维南方程组在神威?太湖之光上的优化 223
9.3.1 物理模型简介 223
9.3.2 使用Athread线程库加速 224
9.3.3 SIMD 226
9.3.4 双缓冲机制 226
9.3.5 优化效果 229
1.1 高性能计算应用需求和意义 1
1.2 混合架构超算发展趋势 2
1.3 如何进行异构混合架构上的程序设计 2
1.4 本书的内容和安排 3
第2章 异构混合架构概述 5
2.1 国际国内超算现状 5
2.1.1 超算发展历程 6
2.1.2 超算发展现状 8
2.1.3 我国超算发展现状 12
2.2 典型的混合架构计算机 13
2.2.1 CPU+GPU架构:以Frontier、Summit、Aurora为代表 13
2.2.2 ARM架构:日本富岳 16
2.2.3 CPU+DCU:曙光超算 17
2.2.4 神威主从核架构:新一代神威超算 18
2.2.5 新一代天河超算 19
2.3 混合架构程序设计语言与框架概述 22
2.3.1 OpenMP 22
2.3.2 MPI 23
2.3.3 CUDA/HIP 24
2.3.4 OpenACC 25
2.3.5 Athread 26
2.3.6 OpenCL 27
2.3.7 oneAPI 28
习题 29
参考文献 30
第3章 异构混合架构性能分析理论 31
3.1 并行程序的时间开销 31
3.2 相对性能 31
3.3 绝对性能 36
3.4 性能瓶颈 37
3.4.1 计算密度 37
3.4.2 访存密集与计算密集 38
3.4.3 roofline性能模型 38
3.4.4 roofline分析示例:SpMV 39
习题 41
参考文献 42
第4章 CPU高性能程序设计 43
4.1 内存模型与OpenMP、MPI并行编程方法 43
4.2 OpenMP并行编程简介 44
4.2.1 OpenMP的Hello World 45
4.2.2 编译制导指令 47
4.2.3 运行时库函数 49
4.2.4 环境变量 49
4.2.5 OpenMP offload 49
4.3 MPI并行编程简介 50
4.3.1 MPI基本函数 50
4.3.2 MPI通信模式 55
4.4 SIMD向量化 60
4.4.1 CPU向量化指令集发展 60
4.4.2 向量化编程实践 61
4.5 性能分析工具 65
4.5.1 perf工具 65
4.5.2 gprof工具 69
4.5.3 IPM工具 70
4.5.4 Score-P工具 73
习题 76
第5章 神威异构众核程序设计 77
5.1 神威超算及编程环境概述 77
5.1.1 神威超算的背景及历史 77
5.1.2 神威?太湖之光超算架构 78
5.1.3 新一代神威超算架构 80
5.1.4 神威编程环境 81
5.1.5 访存层次 84
5.2 神威众核编程 85
5.2.1 众核程序结构 85
5.2.2 从核函数 86
5.2.3 第一个并行程序 87
5.2.4 示例:stencil计算优化 92
5.3 神威SIMD 96
5.3.1 SIMD简介 96
5.3.2 SIMD示例 100
习题 101
第6章 面向DCU架构的程序设计与优化 102
6.1 曙光超算及编程环境概述 102
6.1.1 曙光超算简介 102
6.1.2 曙光超算节点架构 102
6.1.3 ROCm/DTK编程环境 111
6.2 HIP编程方法 112
6.2.1 HIP与CUDA 112
6.2.2 曙光DCU编程模型 113
6.2.3 HIP编程 114
6.3 利用LDS进行数据共享 127
6.3.1 LDS概念 127
6.3.2 LDS使用实例 129
6.4 线程间通信 134
6.4.1 Block级线程通信 134
6.4.2 wavefront级线程通信 135
6.5 reduce优化 138
习题 148
第7章 异构混合架构上的算法设计 149
7.1 DCU上的前缀和 149
7.1.1 Prefix Sum简介 149
7.1.2 并行难点 150
7.1.3 wavefront Scan算法 152
7.1.4 Block Scan算法 154
7.1.5 全局Scan算法 155
7.1.6 更高效的Scan算法 157
7.2 通用矩阵乘 157
7.2.1 GEMM简介 157
7.2.2 并行难点 158
7.2.3 面向DCU的GEMM优化 158
7.2.4 BENCHMARK 163
7.3 DCU上的稀疏矩阵向量乘 164
7.3.1 概述 164
7.3.2 稀疏矩阵CSR存储格式 164
7.3.3 并行难点 164
7.3.4 高效SpMV算法实现 166
习题 170
第8章 异构混合架构常用算法库 172
8.1 算法库介绍 172
8.1.1 常见算法库层次 172
8.1.2 国内外典型超算上的算法库 172
8.2 稠密矩阵计算库:rocBLAS、cuBLAS、swBLAS 173
8.2.1 BLAS接口介绍 173
8.2.2 rocBLAS 177
8.2.3 cuBLAS 181
8.3 稀疏矩阵计算库:rocSPARSE、cuSPARSE、swSPARSE 182
8.3.1 常用的稀疏矩阵的存储格式 182
8.3.2 rocSPARSE 185
8.3.3 cuSPARSE 190
8.3.4 swSPARSE 192
8.4 LAPACK线性代数计算库:特征值、LU 195
8.4.1 LAPACK介绍 195
8.4.2 rocSOLVER 196
8.4.3 cuSOLVER 199
8.5 线性方程组求解 201
8.5.1 常用的求解算法 201
8.5.2 PETSc的层次架构 202
习题 209
第9章 异构混合架构上并行应用程序开发示例 210
9.1 MISA-MD分子动力学模拟程序异构优化 210
9.1.1 分子动力学模拟概述 210
9.1.2 面向DCU的MD优化的挑战性及优化思路 211
9.1.3 主机-设备间通信及其优化 211
9.1.4 并行计算策略 214
9.1.5 其他访存优化技术 215
9.2 SUMMER-CD 216
9.2.1 软件介绍 216
9.2.2 物理模型 216
9.2.3 三层并行模型 218
9.2.4 自适应异构数据传输 221
9.2.5 基于Stream的计算通信重叠 223
9.3 有限体积法求解圣维南方程组在神威?太湖之光上的优化 223
9.3.1 物理模型简介 223
9.3.2 使用Athread线程库加速 224
9.3.3 SIMD 226
9.3.4 双缓冲机制 226
9.3.5 优化效果 229
猜您喜欢