本书是一本涵盖超级计算机原理与实践的综合性教材。书中第一部分主要介绍超级计算机的基础知识,以及超级计算机的硬件和体系结构;第二部分介绍超级计算机的系统软件,包括超级计算机的调度系统、并行文件系统;第三部分主要介绍面向超级计算机的并行编程,包括并行编程基础、传统并行编程、异构并行编程等;第四部分提供一系列典型并行应用案例并进行应用软件介绍,包括科学计算、工程计算、人工智能等领域的应用实例,以及基础软件库和应用开发框架。本书以计算机系统思维能力培养为主线,帮助读者全面了解超级计算机的体系结构和性能,掌握面向超级计算机的编程方法,熟悉超级计算机的应用开发。
样章试读
目录
- 目录
第一部分 超级计算机的基础知识
第1章 超级计算机入门 1
1.1 超级计算机简介 1
1.2 超级计算机的性能指标 5
1.2.1 基本性能指标 5
1.2.2 可扩展性 6
1.2.3 峰值性能与持续性能 7
1.2.4 其他性能指标 8
1.3 超级计算机的基准评测集 8
1.3.1 计算性能评测集 9
1.3.2 I/O 性能评测集 15
1.3.3 网络性能评测集 17
1.3.4 应用评测集 18
1.4 超级计算机的发展历程 19
1.4.1 “初生”时代 19
1.4.2 “克雷”时代 19
1.4.3 “多核”时代 20
1.4.4 “异构”时代 21
1.4.5 国产超级计算机的发展历程 21
1.5 超级计算机的应用领域 22
1.6 本章小结 23
课后习题 23
第2章 超级计算机硬件与体系结构 24
2.1 超级计算机硬件 24
2.1.1 计算阵列 25
2.1.2 存储阵列 26
2.1.3 服务阵列 26
2.1.4 互连通信子系统 27
2.1.5 监控诊断子系统 28
2.2 超级计算机体系结构 28
2.2.1 Flynn 分类法 28
2.2.2 典型超级计算机体系结构分类 29
2.3 本章小结 41
课后习题 42
第二部分 超级计算机的系统软件
第3章 超算调度系统 43
3.1 超算调度系统的发展历史 43
3.2 超算调度系统功能模型 45
3.3 典型超算调度系统 46
3.3.1 LSF 46
3.3.2 Slurm 52
3.4 本章小结 58
课后习题 58
第4章 超算存储与文件系统 59
4.1 超算系统典型存储结构 59
4.2 并行文件系统 60
4.2.1 文件访问接口 60
4.2.2 并行文件系统关键技术 62
4.2.3 Lustre 文件系统 64
4.2.4 BeeGFS 介绍 68
4.3 I/O 中间件 71
4.3.1 MPI I/O 72
4.3.2 PLFS 73
4.3.3 其他 74
4.4 本章小结 75
课后习题 75
第三部分 面向超级计算机的并行编程
第5章 并行编程基础 77
5.1 并行编程模型 77
5.1.1 共享内存编程模型 77
5.1.2 消息传递编程模型 78
5.1.3 数据并行编程模型 80
5.1.4 混合并行编程模型 81
5.1.5 隐式并行编程模型 82
5.2 并行程序执行模式 82
5.2.1 主从模式 82
5.2.2 SPMD 模式 82
5.2.3 MPMD 模式 83
5.3 并行程序设计的方法论 83
5.3.1 Foster 方法论简介 83
5.3.2 并行算法 85
5.4 本章小结 88
课后习题 88
第6章 传统并行编程 90
6.1 MPI 编程 90
6.1.1 MPI 基本概念 90
6.1.2 MPI 通信模式 93
6.2 Pthreads 编程 97
6.2.1 线程管理 98
6.2.2 线程同步 100
6.3 OpenMP 编程 108
6.3.1 编译器指令 108
6.3.2 并行结构与常用指令 108
6.3.3 数据范围属性子句 114
6.3.4 运行时库函数和环境变量 115
6.4 混合并行编程 115
6.4.1 混合并行编程的基本思想 116
6.4.2 混合并行编程方法 116
6.4.3 混合并行编程实例 120
6.5 本章小结 121
课后习题 121
第7章 异构并行编程 123
7.1 CUDA 编程 123
7.1.1 CUDA 编程模型 125
7.1.2 CUDA 执行模型 135
7.1.3 CUDA 函数库 137
7.2 OpenCL 编程 138
7.2.1 OpenCL 平台模型 138
7.2.2 OpenCL 编程模型 139
7.2.3 OpenCL 执行模型 139
7.2.4 OpenCL 内存模型 140
7.2.5 OpenCL 编程实例 141
7.3 本章小结 145
课后习题 146
第四部分 典型并行应用案例与应用软件介绍
第8章 典型并行应用案例 147
8.1 通用矩阵乘法并行化 147
8.1.1 基于 OpenMP 并行化实现 147
8.1.2 基于 Pthreads 并行化实现 148
8.1.3 基于 MPI 并行化实现 149
8.2 经典排序算法并行化 152
8.2.1 奇偶排序并行化:消除数据相关性 152
8.2.2 二路归并排序并行化 154
8.3 生产者消费者问题并行化 155
8.4 分布式机器学习并行化 159
8.4.1 单机计算与并行模式 159
8.4.2 任务划分与聚合 161
8.4.3 分布式架构与网络通信 164
8.5 本章小结 167
课后习题 167
第9章 超算基础软件库和应用开发框架 168
9.1 超算基础软件库 168
9.1.1 ScaLAPACK 168
9.1.2 Trilinos 170
9.1.3 TAO 177
9.1.4 HPCToolkit 178
9.1.5 ADIOS 181
9.1.6 Kokkos 182
9.1.7 VTK-m 184
9.2 超算应用开发框架 185
9.2.1 VASP 185
9.2.2 Gaussian 187
9.2.3 Fluent 190
9.2.4 OpenFOAM 192
9.2.5 GROMACS 196
9.2.6 NAMD 197
9.2.7 MATLAB 198
9.2.8 MOOSE 200
9.3 本章小结 203
课后习题 204
参考文献 205