......(更多)
......(更多)
目录
第1章 并行编程的模式语言 1
1.1 引言 1
1.2 并行编程 2
1.3 设计模式和模式语言 3
1.4 并行编程的模式语言 4
第2章 并行计算的背景和术语 5
2.1 并行程序与操作系统的并发性比较 5
2.2 并行体系结构简介 5
2.2.1 Flynn分类法 6
2.2.2 MIMD的进一步分类 7
2.2.3 小结 9
2.3 并行编程环境 9
2.4 并行计算术语 12
2.5 并行计算的度量 14
2.6 通信 16
2.6.1 延迟和带宽 16
2.6.2 重叠通信和计算与隐藏延迟 16
2.7 本章小结 17
第3章 “寻找并发性”设计空间 18
3.1 设计空间简介 18
3.1.1 概述 19
3.1.2 使用分解模式 19
3.1.3 示例的背景 19
3.2 任务分解模式 21
3.3 数据分解模式 25
3.4 分组任务模式 28
3.5 排序任务模式 30
3.6 数据共享模式 32
3.7 设计评估模式 35
3.8 本章小结 39
第4章 “算法结构”设计空间 40
4.1 概述 40
4.2 选择一种算法结构模式 41
4.2.1 目标平台 41
4.2.2 主要组织原则 42
4.2.3 算法结构决策树 42
4.2.4 重新评估 43
4.3 示例 44
4.3.1 医学成像 44
4.3.2 分子动力学 44
4.4 任务并行模式 45
4.5 分治模式 52
4.6 几何分解模式 56
4.7 递归数据模式 70
4.8 流水线模式 75
4.9 基于事件的协作模式 84
第5章 “支持结构”设计空间 88
5.1 概述 88
5.1.1 程序构造模式 88
5.1.2 表示数据结构的模式 89
5.2 面临的问题 89
5.3 模式的选择 91
5.4 SPMD模式 92
5.5 主/辅助进程模式 105
5.6 循环并行模式 113
5.7 派生/连接模式 125
5.8 共享数据模式 129
5.9 共享队列模式 137
5.10 分布式数组模式 151
5.11 其他支持结构 161
5.11.1 SIMD 162
5.11.2 MPMD 162
5.11.3 客户-服务器计算 163
5.11.4 使用声明语言的并发编程 163
5.11.5 问题求解环境 164
第6章 “实现机制”设计空间 165
6.1 概述 166
6.2 UE的管理 166
6.2.1 线程的创建/销毁 166
6.2.2 进程的创建/销毁 167
6.3 同步 168
6.3.1 存储器同步和围栅 169
6.3.2 栅栏 172
6.3.3 互斥 175
6.4 通信 182
6.4.1 消息传递 182
6.4.2 集合通信 188
6.4.3 其他通信构造 193
附录A OpenMP简介 195
A.1 核心概念 195
A.2 结构块和指令格式 198
A.3 工作分摊法 199
A.4 数据环境子句 202
A.5 OpenMP运行时库 204
A.6 同步 205
A.7 调度子句 208
A.8 本附录小结 210
附录B MPI简介 211
B.1 概念 211
B.2 启动 212
B.3 基本的点到点消息传递 214
B.4 集合操作 216
B.5 高级的点到点消息传递方法 220
B.6 MPI和FORTRAN 224
B.7 本附录小结 226
附录C Java并发编程简介 227
C.1 线程的创建 228
C.1.1 匿名的内部类 229
C.1.2 Executor和工厂方法 230
C.2 原子性、存储器同步和volatile关键字 232
C.3 同步块 232
C.4 等待并通知 234
C.5 锁 235
C.6 其他同步机制和共享数据结构 237
C.7 中断 238
术语表 239
参考文献 249
......(更多)
尽管人们通常尝试尽快进入编程领域,但太快走出问题领域的设计者可能会丢失许多有价值的设计选项。
......(更多)