第1章 并行计算机体系结构 1
1.1 并行计算 1
1.2 计算机体系结构的弗林分类方法 2
1.3 SIMD体系结构 3
1.4 MIMD体系结构 4
1.5 并行计算机类型 6
1.6 并行计算机系统结构 7
1.7 并行计算机访存模型 12
1.8 本章小结 16
习题 16
第2章 并行计算机互联网络 18
2.1 系统互联 18
2.2 互联网络的分类 19
2.3 动态互联网络 21
2.4 多级互联网络 23
2.5 静态互联网络 33
2.6 标准互联网络 38
2.7 本章小结 42
习题 43
第3章 并行计算机体系结构性能 44
3.1 并行计算机系统性能指标 44
3.2 Amdahl定律 46
3.3 Gustafson定律 48
3.4 Sun-Ni定律 49
3.5 并行体系结构的可扩展性 49
3.6 基准测试程序 50
3.7 本章小结 52
习题 52
第4章 共享存储器系统 53
4.1 共享存储器系统分类 53
4.2 减少存储器访问冲突方法 55
4.3 基于总线的对称多处理机系统 58
4.4 共享存储器系统高速缓存一致性 59
4.5 基于监听总线一致性协议 64
4.6 基于目录的一致性协议 79
4.7 基于Token的一致性协议 86
4.8 共享存储器的编程模型 87
4.9 本章小结 87
习题 87
第5章 消息传递系统 90
5.1 消息传递系统结构 90
5.2 路由器模型 91
5.3 交换机制 92
5.4 消息传递系统中路由 96
5.5 消息传递系统编程模型 100
5.6 本章小结 100
习题 100
第6章 机群 101
6.1 机群的体系结构 101
6.2 机群的互联结构 103
6.3 IBM SP系统 105
6.4 本章小结 109
习题 109
第7章 多核构架 110
7.1 多核技术 110
7.2 多核芯片 111
7.3 多核中的并行性 113
7.4 多核处理器的Cache结构 116
7.5 多核处理器核间通信技术 120
7.6 多核处理器总线设计 121
7.7 多核处理器操作系统设计 121
7.8 多核处理器低功耗设计 122
7.9 多核处理器存储器墙 123
7.10 本章小结 124
习题 124
第8章 并行计算模型与并行算法设计方法 126
8.1 并行计算模型 126
8.2 PRAM模型 127
8.3 APRAM模型 128
8.4 BSP模型 129
8.5 logP模型 132
8.6 Brent定理 133
8.7 并行算法设计方法 133
8.8 本章小结 134
习题 135
第9章 并行算法 136
9.1 并行算法设计 136
9.2 数组求和 138
9.3 排序 139
9.4 矩阵运算 146
9.5 线性方程组求解 153
9.6 快速傅里叶变换 161
9.7 图算法 166
9.8 本章小结 176
习题 176
第10章 并行程序设计方法 178
10.1 并行程序设计基本概念 178
10.2 并行度 179
10.3 交互/通信 181
10.4 并行编程风范 184
10.5 并行编程模型与并行语言 185
10.6 共享存储器编程 188
10.7 消息传递编程 190
10.8 数据并行编程 191
10.9 本章小结 192
习题 192
第11章 MPI并行程序设计 193
11.1 MPI基本编程 193
11.2 点对点通信 195
11.3 MPI预定义数据类型 198
11.4 通信模式 199
11.5 集合通信 201
11.6 对等模式和主从模式 215
11.7 非阻塞通信 216
11.8 重复非阻塞通信 222
11.9 进程组的管理 225
11.10 通信组的管理 227
11.11 虚拟进程拓扑 228
11.12 本章小结 232
习题 232
第12章 POSIX线程并行程序设计 235
12.1 进程、线程和Pthreads 235
12.2 创建线程 237
12.3 线程同步 240
12.4 生产者-消费者问题 268
12.5 本章小结 273
习题 274
第13章 OpenMP并行程序设计 276
13.1 OpenMP编程基础 276
13.2 并行域 282
13.3 数据处理环境 295
13.4 线程同步 307
13.5 任务调度 318
13.6 本章小结 323
习题 324
第14章 Java并行程序设计 327
14.1 线程 327
14.2 线程间通信 338
14.3 Java线程同步 343
14.4 fork/join 357
14.5 本章小结 361
习题 361
第15章 Windows多线程并行程序设计 364
15.1 创建线程 364
15.2 Windows线程同步 371
15.3 管道机制 406
15.4 变量的原子更新 408
15.5 线程优先级 409
15.6 本章小结 411
习题 411
附录A MPI函数调用 414
附录B OpenMP指令和库函数 421
附录C POSIX线程库函数 425
附录D Java多线程常用方法 428
附录E Windows多线程常用方法 431
参考文献 436