第1章 并行计算基础 1
1.1什么是并行计算 1
1.2为什么需要并行计算 2
1.3并行计算机的发展 4
1.4并行算法复杂性分析 5
1.5并行计算的基本概念 7
第2章 基础并行算法 9
2.1并行算法设计基本原则 9
2.2区域分解方法 10
2.3功能分解方法 11
2.4流水线技术 12
2.5分而治之方法 13
2.6同步并行算法 14
2.7异步并行算法 14
第3章 经典算法的并行计算 16
3.1矩阵乘并行计算方法 16
3.1.1矩阵卷帘存储方式 16
3.1.2并行矩阵乘法 17
3.2线性方程组并行求解方法 21
3.2.1分布式系统的并行LU分解算法 22
3.2.2三角方程组的并行解法 23
3.3经典迭代算法的并行化 25
3.3.1 Jacobi迭代法 25
3.3.2 Gauss-Seidel迭代法 26
3.4特征值问题并行计算方法 27
3.4.1对称三对角矩阵特征值问题 27
3.4.2 Householder变换 28
3.4.3化对称矩阵为三对角矩阵 29
第4章 消息传递编程接口MPI 30
4.1并行环境函数 30
4.2 MPI进程控制函数 32
4.2.1 MPI进程组操作函数 32
4.2.2 MPI通信子操作 36
4.3点到点通信函数 39
4.3.1阻塞式通信函数 39
4.3.2非阻塞式通信函数 44
4.3.3特殊的点到点通信函数 49
4.3.4 MPI的通信模式 50
4.4自定义数据类型 51
4.4.1用户定义的数据类型 51
4.4.2 MPI的数据打包与拆包 59
4.5聚合通信函数 62
4.5.1障碍同步 62
4.5.2单点与多点通信函数 62
4.5.3多点与多点通信函数 66
4.6全局归约操作函数 70
第5章 共享存储并行编程OpenMP 80
5.1 OpenMP发展历程 80
5.2 OpenMP执行模型和存储模型 81
5.3 OpenMP指导语句 82
5.3.1 parallel结构 83
5.3.2工作共享结构 85
5.3.3数据共享属性子句 98
5.3.4其他子句 104
5.3.5 Tasking结构 107
5.3.6结构嵌套规则 111
5.4 OpenMP运行时函数库 111
5.4.1运行时函数定义 111
5.4.2执行环境函数 111
5.4.3锁函数 116
5.4.4时间函数 120
5.5 OpenMP环境变量 120
5.6 OpenMP在MIC架构上的优化技术 122
5.6.1 offload模式下将Host环境传播至MIC(target)计算节点 122
5.6.2 offload模式提供了多种关键字来实现多功能的需求 122
5.6.3查看编译器对程序中OpenMP区域的优化处理 123
5.6.4 OpenMP在Offload及Native模式下的不同缺省值 123
5.6.5设置OpenMP的栈空间大小 124
5.6.6分配部分计算资源给运行的程序 125
第6章 GPU并行加速实现技术 126
6.1 GPU以及GPGPU发展简介 126
6.2 CUDA并行编程模型 129
6.2.1线程结构 129
6.2.2线程调度 132
6.3 CUDA软件体系 134
6.3.1 CUDA函数定义以及变量类型限定符 134
6.3.2 CUDA算数指令与数学函数 136
6.3.3 CUDA内置函数 136
6.3.4 CUDA软件体系结构 137
6.3.5 CUDA程序的编译 139
6.4 CUDA存储器模型 139
6.4.1寄存器 141
6.4.2全局存储器 141
6.4.3本地存储器 145
6.4.4共享存储器 145
6.4.5常量存储器 147
6.4.6纹理存储器 147
6.5 CUDA程序的优化 151
6.5.1处理器利用率优化 152
6.5.2指令吞吐量优化 154
6.5.3存储器访问优化 157
6.5.4矩阵乘法程序优化示例 163
6.5.5矩阵转置程序优化示例 165
6.6 MPI/CUDA混合编程 170
6.6.1 MPI/CUDA混合编程模型 171
6.6.2 GPU集群上的数据传输模型 172
6.6.3 MPI/CUDA混合编程以及编译运行示例 174
6.6.4 MPI/OpenMP/CUDA混合编程 177
6.6.5异构平台数学库MAGMA简介 184
参考文献 186
索引 189
《信息与计算科学丛书》已出版书目 191