《多核并行高性能计算 OpenMP》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:雷洪,胡许冰编著
  • 出 版 社:北京:冶金工业出版社
  • 出版年份:2016
  • ISBN:9787502472498
  • 页数:272 页
图书介绍:本书共分为三部分,第一部分是OpenMP并行,第二部分是MPI并行,第三部分是集群计算服务的使用。本书介绍OpenMP编程特点和方法,为我国并行计算做普及工作。本书可作为从事较大规模工程计算的工程师了解多核心体系结构计算系统的实用参考书。

1 并行计算概论 1

1.1 多核CPU 2

1.2 并行计算与分布式计算 2

1.3 并行计算机的种类 3

1.3.1 CPU与存储器的连接方式 3

1.3.2 数据的通信方式 4

1.3.3 指令和数据之间的工作方式 5

1.4 并行编程模式 5

1.4.1 共享内存模式 6

1.4.2 消息传递模式 7

1.4.3 数据并行模式 8

1.5 OpenMP和MPI的特点 10

1.6 并行计算中常用概念 11

1.6.1 程序、线程、进程和超线程 11

1.6.2 单核编程和多核编程 12

1.6.3 多线程编程和多进程编程 13

1.6.4 并行算法评价 13

1.7 OpenMP多核编程 15

1.7.1 OpenMP的历史 15

1.7.2 OpenMP的特点 16

1.8 科学计算领域语言的选取 16

1.9 Fortran发展历史 18

1.9.1 Windows系统 18

1.9.2 Linux系统 18

1.9.3 Fortran程序的编译和执行 19

1.10 小结 21

练习题 21

2 OpenMP编程简介 22

2.1 编译指导语句 23

2.2 并行执行模式 23

2.2.1 编译指导语句格式 24

2.2.2 主要指令 25

2.2.3 主要子句 26

2.2.4 指令和子句的配套使用 27

2.3 头文件 28

2.4 常用库函数 28

2.5 最简单的并行程序 29

2.6 小结 33

练习题 33

3 数据环境 34

3.1 PRIVATE子句、SHARED子句和DEFAULT子句 34

3.2 FIRSTPRIVATE子句和LASTPRIVATE子句 38

3.3 THREADPRIVATE子句 41

3.4 COPYIN子句和COPYPRIVATE子句 45

3.5 REDUCTION子句 49

3.6 伪共享 53

3.7 小结 54

练习题 54

4 并行控制 56

4.1 PARALLEL指令 56

4.2 设定线程数量 59

4.3 默认模式 59

4.4 静态模式 60

4.5 动态模式 61

4.6 嵌套模式与NUM_THREADS子句 63

4.7 IF子句(条件并行) 65

4.8 小结 67

练习题 68

5 并行构造 69

5.1 负载平衡 69

5.1.1 静态负载平衡 69

5.1.2 动态负载平衡 70

5.2 DO指令 71

5.2.1 循环依赖 73

5.2.2 单重循环 78

5.2.3 嵌套循环 80

5.2.4 循环工作量的划分与调度 83

5.3 SECTIONS指令 90

5.4 WORKSHARE指令 93

5.5 SINGLE指令 96

5.6 小结 98

练习题 98

6 线程同步 99

6.1 互斥锁机制 99

6.2 事件同步机制 100

6.3 BARRIER指令 100

6.4 NOWAIT指令 102

6.5 MASTER指令 104

6.6 CRITICAL指令 106

6.7 ATOMIC指令 108

6.8 ORDERED指令 110

6.9 FLUSH指令 113

6.10 小结 115

练习题 115

7 运行环境 117

7.1 环境变量 117

7.1.1 OMP_DYNAMIC 117

7.1.2 OMP_SCHEDULE 118

7.1.3 OMP_NUM_THREADS 118

7.1.4 OMP_NESTED 118

7.1.5 OMP_STACKSIZE 118

7.1.6 环境变量的设置方法 119

7.2 库函数 120

7.2.1 运行环境操作函数 120

7.2.2 OpenMP时间函数 121

7.2.3 Fortran常用时间函数 123

7.2.4 锁函数 129

7.3 小结 139

练习题 139

8 OpenMP 3.0新特征 140

8.1 任务 140

8.1.1 任务结构 140

8.1.2 任务特征 141

8.1.3 任务类别 141

8.1.4 任务同步 143

8.1.5 DO指令、SECTIONS指令和TASK指令 143

8.1.6 TASK指令与递归算法 151

8.2 COLLAPSE子句 154

8.3 锁拥有者的变迁 156

8.4 小结 157

练习题 157

9 应用实例 158

9.1 循环的并行 158

9.1.1 单重循环 159

9.1.2 多维数组和嵌套循环 167

9.2 粗粒度的设置 171

9.2.1 IF子句 171

9.2.2 if语句 173

9.2.3 方案总结 175

9.3 全局变量和局部变量 175

9.3.1 common定义 176

9.3.2 module定义 179

9.3.3 全局变量和局部变量、共享变量和私有变量 181

9.3.4 私有变量和段错误 182

9.4 小结 183

练习题 183

10 高性能计算程序的实现途径 185

10.1 硬件条件和操作系统 186

10.2 科学问题算法的优化 186

10.2.1 数学模型 187

10.2.2 求解方法 188

10.3 串行程序的编写 190

10.4 常见的调试器 191

10.5 高性能程序的优化步骤 191

10.6 串行程序的正确性调试 193

10.6.1 程序的错误类型 193

10.6.2 计算程序中常见错误 193

10.6.3 静态安全检查 194

10.6.4 动态安全检查 198

10.6.5 IDBC串行调试 200

10.7 程序热点的确定 206

10.7.1 编译器热点分析报告 206

10.7.2 手动热点分析报告 211

10.8 串行程序的优化 215

10.8.1 循环变换 216

10.8.2 向量化 219

10.8.3 Intel Fortran常用优化策略 230

10.9 并行程序的优化 236

10.9.1 性能提升的预估 236

10.9.2 并行优化步骤 236

10.9.3 向导自动并行化(GAP) 237

10.9.4 优化技术 238

10.9.5 自动并行化 238

10.9.6 并行调试策略 239

10.9.7 IDBC并行调试 240

10.10 小结 245

练习题 245

附录 246

附录1 常用的Linux命令 246

附录2 Linux下的文本编辑器vi 249

附录2.1 vi的基本概念 249

附录2.2 vi的主要操作 249

附录3 Intel Fortran安装 252

附录4 常用的GDB命令 256

附录5 Linux环境下Intel Fortran常用编译方案 259

附录6 Intel Fortran常用编译开关 261

附录7 C和C++语言中OpenMP常见用法 266

附录7.1 语法格式 266

附录7.2 头文件 266

附录7.3 指令类 266

附录7.4 子句类 268

附录7.5 库函数 269

附录7.6 最简单的C/C++并行程序 270

附录7.7 OpenMP并行程序的编译和执行 270

参考文献 271