《OpenMP编译原理及实现技术》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:罗秋明,明仲,刘刚等编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2012
  • ISBN:9787302272984
  • 页数:308 页
图书介绍:本书是一本学习OpenMP编译原理和实现技术的入门级教材。全书分成三篇,第一篇是并行计算机及OpenMP编程的基础内容,第二篇是OpenMP编译及其运行环境,第三篇是实践内容。

第一篇 基础 3

第1章 并行计算基础 3

1.1基本概念 3

1.2并行计算平台 4

1.2.1典型结构 4

1.2.2SMP 6

1.2.3 NUMA 8

1.2.4GPU 10

1.2.5Cluster 11

1.3并行程序设计技术 14

1.3.1并行程序设计 14

1.3.2 OpenMP 17

1.3.3 MPI 17

1.3.4 CUDA 18

1.3.5 HPF 19

1.4本章小结 19

习题 19

第2章OpenMP编程基础 20

2.1 OpenMP基本概念 20

2.1.1执行模式 20

2.1.2OPenMP编程要素 21

2.2OpenMP编程 24

2.2.1并行域管理 24

2.2.2任务分担 25

2.2.3同步 34

2.2.4数据环境控制 41

2.3本章小结 49

习题 49

第二篇OpenMP编译 53

第3章OpenMP编译 53

3.1 OpenMP编译系统 53

3.1.1编译系统 53

3.1.2目标语言 54

3.2 OpenMP编译器结构 55

3.2.1功能模块 56

3.2.2工作流程 59

3.3编译优化 60

3.4本章小结 60

习题 60

第4章 词法与语法分析 61

4.1 Lex工具 61

4.1.1 Lex的正则表达式 62

4.1.2 Lex的使用方法 64

4.2 OpenMPC的词法分析 66

4.2.1 C语言单词 66

4.2.2 OpenMP单词 66

4.2.3 OpenMP与C语言公用单词 67

4.3 scanner.l 68

4.3.1全局声明段 68

4.3.2模式匹配规则段 70

4.3.3补充函数段 75

4.3.4 scanner.c 78

4.3.5 scanner.h 78

4.4 Yacc工具 79

4.4.1 Yacc 79

4.4.2 Yacc文件实例 81

4.5 OpenMPC语法分析 85

4.6本章小结 88

习题 88

第5章AST的创建 90

5.1中间表示 90

5.1.1两种中间表示形式 90

5.1.2中间表示的选择 91

5.2 AST节点数据结构 92

5.2.1语句节点 92

5.2.2类型说明节点 95

5.2.3声明节点 96

5.2.4表达式节点 97

5.2.5 OpenMP制导节点 98

5.3 AST节点维护函数 103

5.4 AST的创建 104

5.4.1语法制导翻译 105

5.4.2例1 OpenMP的for节点 107

5.4.3例2 C语言while语句 108

5.4.4 Helloworld.c的AST 109

5.5符号表 111

5.5.1字符串表 112

5.5.2符号表 112

5.5.3符号表操作 114

5.5.4作用域管理 115

5.6本章小结 115

习题 116

第6章 并行域管理 117

6.1并行域及其嵌套 117

6.2并行域管理 119

6.2.1线程无关接口 119

6.2.2线程的供给 120

6.2.3线程层次关系 120

6.2.4并行域代码封装与标识 122

6.2.5任务分担问题 122

6.3目标代码形式 123

6.4 OMPi的并行域管理 124

6.4.1 ORT统一界面 124

6.4.2并行域代码变换 126

6.4.3线程管理与控制 127

6.4.4总览 132

6.5本章小结 133

习题 133

第7章 任务分担与线程同步 134

7.1 for制导指令 134

7.1.1for任务分担 134

7.1.2循环变量分解原则 135

7.1.3目标代码功能 136

7.1.4目标代码形式 137

7.1.5OMPi的for制导指令 138

7.2 sections制导指令 144

7.2.1sections任务分担描述 144

7.2.2section划分原则 145

7.2.3目标代码功能 145

7.2.4目标代码形式 145

7.2.5OMPi的sections制导指令 147

7.3 single制导指令 149

7.4 nowait问题 149

7.5归约操作 151

7.6线程同步 152

7.6.1atomic 152

7.6.2 critical 153

7.6.3master 154

7.6.4 ordered 154

7.6.5 nowait 155

7.6.6 flush 155

7.6.7barrier 155

7.7本章小结 155

习题 156

第8章 数据环境控制 157

8.1共享与私有 157

8.1.1非全局变量的共享 158

8.1.2变量的私有化 159

8.1.3 threadprivate子句 159

8.1.4基于进程的问题 160

8.2并行域边界处理 160

8.2.1 private变量 160

8.2.2 threadprivate变量 160

8.3 OMPi数据环境控制 161

8.3.1共享变量 161

8.3.2私有变量 163

8.3.3线程专有变量 166

8.3.4归约变量 169

8.4本章小结 170

习题 170

第9章 产生目标代码 171

9.1源代码变换 171

9.1.1变换流程 171

9.1.2支撑函数 173

9.2 AST变换 173

9.2.1拼接及创建函数 173

9.2.2变换函数集 174

9.2.3 OpenMP节点变换 177

9.2.4 parallel变换 180

9.2.5 for变换 183

9.2.6 sections变换 185

9.2.7数据环境的处理 186

9.3代码优化 188

9.4 AST输出 189

9.4.1 OMPi的AST输出 189

9.4.2 OpenMP节点输出 189

9.5本章小结 192

第10章运行环境 193

10.1重要数据结构 193

10.1.1 ORT 193

10.1.2线程池与EECB 194

10.1.3任务分担结构 195

10.1.4共享变量结构 197

10.2初始化与退出 198

10.2.1 ORT初始化 199

10.2.2 EELIB初始化 202

10.3并行支撑函数 204

10.3.1线程状态管理 204

10.3.2并行域管理 206

10.3.3任务分担 211

10.3.4同步 220

10.3.5变量的数据环境 221

10.4 OpenMP的API 222

10.4.1 API函数 222

10.4.2 ICV变量 224

10.4.3引用与链接 225

10.5环境变量 225

10.6本章小结 226

第三篇 实践篇 229

第11章 编译器及测试工具 229

11.1常见OpenMP编译器 229

11.1.1 GCC编译器 229

11.1.2 OMPi编译器 231

11.1.3 Onmi编译器 233

11.2性能测试工具 235

11.2.1 EPCC Microbenchmark 236

11.2.2 NSA Parallel Benchmark 242

11.2.3 SPEC OMP2001 243

11.2.4 LLNL 243

11.3本章小结 243

第12章OMPi框架分析 245

12.1工作流程 245

12.2 OMPi的处理步骤 246

12.3代码转换 250

12.4进程问题 252

12.4.1全局变量 252

12.4.2非全局共享变量 253

12.5运行环境 254

12.5.1初始化 254

12.5.2并行域的处理 254

12.5.3任务分担 254

12.5.4同步 256

12.5.5线程专有变量 256

12.5.6与EELIB的接口 258

12.6源代码文档结构 258

12.7后续阅读建议 259

12.8本章小结 259

第13章ompicc.c源码分析 260

13.1 ompicc工作流程 260

13.2变量声明及参数处理 261

13.3编译部分 271

13.3.1文件名处理 272

13.3.2预处理 273

13.3.3代码变换 274

13.3.4 C编译 275

13.4链接部分 276

13.5主函数部分 278

13.5.1参数及配置函数 278

13.5.2 main函数 281

13.6配置文件 283

13.7运行参数与选项 287

13.7.1环境变量 288

13.7.2命令行参数 288

13.7.3配置文件 291

13.8本章小结 292

第14章ompi.c源码分析 293

14.1 ompi工作流程 293

14.2 ompi.c 294

14.2.1变量声明及辅助函数 294

14.2.2 main()函数 297

14.2.3错误处理 303

14.3 ort.defs 303

14.4 ompi.h 307

14.5小结 308