第一篇 并行计算硬件基础 3
第一章 并行计算机系统及其结构模型 3
1.1 并行计算与高端并行计算机 3
1.1.1 并行计算与计算科学 3
1.1.2 当代科学与工程问题的计算需求 4
1.1.3 万亿次高端并行机 7
1.2 并行计算机系统互连 9
1.2.1 系统互连 9
1.2.2 表态互连网络 10
1.2.3 动态互连网络 13
1.2.4 宽带互连网络 17
1.3 并行计算机系统结构 21
1.3.1 并行计算机结构模型 21
1.3.2 并行计算机访存模型 25
1.3.3 并行计算机存储组织 29
1.4 小结和导读 33
习题 34
第二章 当代并行机系统:SMP、MPP和COW 38
2.1 对称多处理机SMP 38
2.1.1 SMP和CC-NUMA结构特性 38
2.1.2 SGL/Cray Origin 2000超级服务器 40
2.2 大规模并行机MPP 47
2.2.1 MPP结构特性 47
2.2.2 机群型大规模并行机SP2 51
2.3 工作站机群COW 57
2.3.1 COW的基本原理与技术 58
2.3.2 Berkeley的NOW计划 61
2.4 国产曙光毓并行机系统 67
2.4.1 全对称共享存储多处理机系统:曙光1号 68
2.4.2 大规模并行处理系统:曙光-1000 72
2.4.3 超级并行计算机系统:曙光-2000 75
2.5 小结和导读 80
习题 81
3.1.1 Amdahl定律 83
第三章 并行计算性能评测 83
3.1 加速比性能定律 83
3.1.2 Gustafson定律 85
3.1.3 Sun和Ni定律 85
3.1.4 有关加速的讨论 87
3.2 可扩放性评测标准 88
3.2.1 并行计算的可护放性 88
3.2.2 等效率度量标准 89
3.2.3 等速度度量标准 91
3.2.4 平均延迟度量标准 95
3.2.5 有关可扩放性标准的讨论 97
3.3 基准测试程序 99
3.3.1 基本测试程序 99
3.3.2 数学库测试程序 100
3.3.3 并行测试程序 101
3.4 小结和导读 102
习题 102
4.1.1 并行算法的定义和分类 107
4.1 并行算法的基础知识 107
第二篇 并行算法的设计 107
第四章 并行算法的设计基础 107
4.1.2 并行算法的表达 108
4.1.3 并行算法的复杂性度量 109
4.1.4 并行算法中的同步与通信 110
4.2 并行计算模型 112
4.2.1 PRAM模型 112
4.2.2 异步PRAM模型 113
4.2.3 BSP模型 114
4.2.4 logP模型 116
4.2.5 C3模型 118
4.2.6 对BSP和logP的评注 121
4.3 小结和导读 123
习题 124
5.1.1 设计方法描述 129
第五章 并行算法的一般设计方法 129
5.1 串行算法的直接并行化 129
5.1.2 快排序算法的并行化 130
5.2 从问题描述开始设计并行算法 132
5.2.1 串匹配算法 132
5.2.2 KMP串行串匹配算法 133
5.2.3 并行串区配算法的设计思路 136
5.3 借用已有算法求解新问题 137
5.3.1 设计方法描述 137
5.3.2 利用矩阵乘法求所有点对间最短路径 138
5.4 小结和导读 141
习题 141
第六章 并行算法的基本设计技术 144
6.1 划分设计技术 144
6.1.1 均匀划分技术 144
6.1.2 方根划分技术 146
6.1.3 对数划分技术 146
6.1.4 功能划分技术 148
6.2 分治设计技术 149
6.2.1 双调归并网络 149
6.2.2 凸壳问题 151
6.3 平衡树设计技术 153
6.3.1 求取最大值 153
6.3.2 计算前缀和 154
6.4 倍增设计技术 155
6.4.1 表序问题的计算 155
6.4.2 求森林的根 156
6.5 流水线设计技术 158
6.5.1 一维心动阵列上的DFT计算 158
6.5.2 一维心动阵列上的卷积计算 159
6.6 小结和导读 161
习题 162
第七章 并行算法的一般设计过程 164
7.1 PCAM设计方法学 164
7.2 划分 165
7.2.1 域分解 166
7.2.2 功能分解 166
7.2.3 划分判据 167
7.3 通信 167
7.3.1 局部通信 168
7.3.2 全局通信 169
7.3.3 非结构化、动态和异步通信 170
7.3.4 通信判据 170
7.4 组合 171
7.4.1 增加粒度 171
7.4.2 保持灵活性和减少软件工程成本 174
7.4.3 组合判据 174
7.5 映射 175
7.5.1 负载平衡算法 175
7.5.2 任务调度算法 177
7.5.3 映射判据 177
7.6 小结和导读 178
习题 179
第三篇 并行数值算法 185
第八章 基本通信操作 185
8.1 选路方法与开关技术 185
8.1.1 选路方法 185
8.1.2 开关技术 187
8.2 单一信包一到一传输 189
8.3 一到多播送 190
8.3.1 使用SF进行一到多播送 190
8.3.2 使用CF进行一到多播送 191
8.4 多到多播送 193
8.4.1 使用SF进行多到多播送 193
8.4.2 使用CT进行多到多播送 195
8.5 小结和导读 196
习题 198
9.1.1 带状划分 203
9.1 矩阵的划分 203
第九章 稠密矩阵运算 203
9.1.2 棋盘划分 204
9.2 矩阵转置 205
9.2.1 棋盘划分的矩阵转置 205
9.2.2 带状划分的矩阵转置 208
9.3 矩阵-向量乘法 209
9.3.1 带状划分的矩阵-向量乘法 210
9.3.2 棋盘划分的矩阵-向量乘法 211
9.4 矩阵乘法 213
9.4.1 简单并行分块乘法 214
9.4.2 Cannon乘法 215
9.4.3 Fox乘法 218
9.4.4 DNS乘法 218
9.5 小结和导读 223
习题 224
10.1.1 基本术语 227
10.1 三角形方程组的求解 227
第十章 线性方程组的求解 227
10.1.2 上三角方程组的求解 228
10.2 三对角方程组的求解 230
10.2.1 三对角方程组直接求解法 230
10.2.2 三对角方程组奇偶归约求解法 232
10.3 稠密线性方程组的求解 233
10.3.1 有回代的高斯消去法 233
10.3.2 无回代的高斯-约旦法 237
10.3.3 迭代求解的高斯-赛德尔法 239
10.4 稀疏线性方程组的求解 241
10.4.1 稀疏矩阵的存储方式 241
10.4.2 雅可比迭代法 243
10.4.3 高斯-赛德尔迭代法 247
10.4.4 超松弛迭代法 249
10.4.5 多重网格法 249
10.4.6 共轭梯度法 251
10.5 小结和导读 256
习题 257
第十一章 快速傅里叶变换 260
11.1 离散博氏变换 260
11.1.1 预备知识 260
11.1.2 离散傅里叶变换 261
11.1.3 离散傅里叶逆变换 263
11.1.4 离散傅氏变换的蝶式计算 263
11.2 快速傅氏变换串行算法 265
11.2.1 串行FFT迭代算法 265
11.2.2 串行FFT递归算法 267
11.3 并行FFT算法 269
11.3.1 SIMD-MC2上FFT算法 269
11.3.2 SIMD-BF上FFT算法 272
11.3.3 SIMD-CC上FFT算法 273
11.3.4 MIMD-DM上FFT算法 275
11.4 小结和导读 278
习题 279
第四篇 并行程序设计 283
第十二章 并行程序设计基础 283
12.1 并行程序设计概述 283
12.1.1 串行程序设计与并行程序设计 283
12.1.2 并行程序设计环境 285
12.1.3 并长程序设计方法 285
12.2 进程 287
12.2.1 进程和基本概念 287
12.2.2 进程的并行执行 290
12.2.3 进程的相互作用 291
12.3 线程 292
12.3.1 线程的基本要领 293
12.3.2 线程的管理 293
12.3.3 线程的同步 295
12.4 同步 295
12.4.1 原子与互斥 295
12.4.2 高级同步结构 296
12.4.3 低级同步原语 297
12.5 通信 299
12.5.1 影响通信系统性能的因素 300
12.5.2 低级通们支持 301
12.5.3 TCP/IP通信协议组简介 302
12.6 小结和导读 306
习题 306
第十三章 并行程序设计模型和共享存储系统编程 309
13.1 并行编程风范和样本程序 309
13.1.1 五种并行骗程风范 309
13.1.2 计算?样本程序 310
13.2 并行程序设计模型 312
13.2.1 隐式并行模型 312
13.2.2 数据并行模型 313
13.2.3 消息传递模型 314
13.2.4 共享变量模型 316
13.3 共享存储并行编程 318
13.3.1 ANSI X3H5共享存储模型 320
13.3.2 POSIX线程模型 322
13.3.3 Open MP标准 323
13.4 小结和导读 326
习题 327
第十四章 分布存储系统并行编程 332
14.1 基于消息传递的并行编程 332
14.1.1 SPMD并行编程 333
14.1.2 MPMD并行程序 334
14.2 MPI并行编程 335
14.2.1 最基本的MPI 336
14.2.2 群体通信 338
14.2.3 通信体 340
14.2.4 导出数据类型 342
14.2.5 点到点通信 343
14.3 PVM并行编程 348
14.3.1 PVM概貌 348
14.3.2 PVM消息传递库 349
14.4 基于数据并行的并行编程 352
14.4.1 数据并行模型的特点 352
14.4.2 数据并行编程的基本问题 352
14.5 HPF并行编程 353
14.5.1 HPF的语言特点 354
14.5.2 HPF的数据并行机制 354
14.5.3 HPF使用中的若干问题 359
14.6 小结和导读 361
习题 362
附录一 MPI的函数的C语言说明 366
附录二 MPI的函数的Fortran语言说明 368
第十五章 并行程序设计环境与工具 371
15.1 软件工具与环境 371
15.1.1 编码工具 371
15.1.2 软件工程工具 372
15.1.3 集成工具 372
15.1.4 将来的工具与环境 373
15.2 并行编译器 374
15.2.1 编译及其并行化 375
15.2.2 相关分析 377
15.2.3 代码优化 379
15.2.4 代码生成 384
15.3 并行程序调试和性能分析 384
15.3.1 并行程序的调试 384
15.3.2 并行程序的性能分析 387
15.3.3 并行程序的可视化设计环境与工具 389
15.4 小结和导读 390
习题 391
算法索引 394
表格索引 396
示范程序索引 398
参考文献 399
并行与分布计算Web网址 409
术语中-英对照及索引 415