并行计算与程序设计(第二版) / 普通高等院校“十四五”计算机类专业系列教材
定价:¥36.00
作者: 刘其成
出版时间:2024-01
最新印次日期:2024-1
出版社:中国铁道出版社
- 中国铁道出版社
- 9787113307080
- 2版
- 519573
- 60269823-5
- 16开
- 2024-01
- 工学
- 计算机类
- 计算机类
- 本科
作者简介
内容简介
本书是“普通高等院校‘十四五’计算类专业系列教材”之一,对并行计算的理论知识和并行程序设计方法进行了系统的论述,包括并行计算基本概念、并行计算机基础、并行计算模型、并行算法设计基础、并行计算性能评测、OpenMP多线程并行程序设计、MPI消息传递并行程序设计、Java多线程并行程序设计、Python并行程序设计、大数据分布式计算等内容。
本书集作者多年的教学经验编写而成,在论述并行计算理论知识的基础上,特别注重并行程序设计的实践方法及实用性。书中含有大量精心设计并调试通过的程序实例,以方便读者参考。
本书适合作为普通高等院校计算机科学与技术专业、软件工程专业以及计算机类相关专业本科生和研究生的教材,也可作为社会培训教材或软件开发人员的参考书。
本书集作者多年的教学经验编写而成,在论述并行计算理论知识的基础上,特别注重并行程序设计的实践方法及实用性。书中含有大量精心设计并调试通过的程序实例,以方便读者参考。
本书适合作为普通高等院校计算机科学与技术专业、软件工程专业以及计算机类相关专业本科生和研究生的教材,也可作为社会培训教材或软件开发人员的参考书。
目录
第1章 概述1
1.1 实例1
1.1.1 求和1
1.1.2 泡茶问题2
1.1.3 图书馆新书上架2
1.1.4 天气预报3
1.1.5 HPCC计划3
1.1.6 教务管理系统3
1.1.7 地球物理石油勘探数据处理系统4
1.2 并行计算基础知识5
1.2.1 并行计算的重要性5
1.2.2 并行计算的定义、并行计算机系统及软件6
1.2.3 并行计算的应用分类6
1.2.4 并行设计的方法7
1.2.5 应用系统的并行性8
1.2.6 并行计算的研究内容8
1.3 并行程序设计策略和模型9
1.3.1 并行程序设计策略9
1.3.2 并行程序设计模型9
1.4 相关概念10
1.4.1 顺序、并发与并行10
1.4.2 进程和线程11
1.4.3 一些基本概念12
习题13
第2章 并行计算机基础14
2.1 并行计算机体系结构14
2.1.1 结点15
2.1.2 互联网络15
2.1.3 并行计算机访存模型19
2.2 并行计算机的分类20
2.2.1 并行计算机的控制结构20
2.2.2 地址空间21
2.2.3 并行计算机系统结构模型21
2.3 多核技术28
2.3.1 多核芯片28
2.3.2 片上多核处理器体系结构28
2.3.3 超线程技术29
2.3.4 基于多核的软件开发30
2.3.5 虚拟化技术30
2.4 GPU技术30
2.4.1 简介30
2.4.2 GPU与并行计算31
习题32
第3章 并行计算模型33
3.1 并行计算模型概述33
3.1.1 串行计算模型与并行计算模型33
3.1.2 并行计算模型与并行算法33
3.1.3 并行计算模型与并行系统中其他模型的关系34
3.2 PRAM模型34
3.2.1 基本PRAM模型34
3.2.2 实例35
3.3 BSP模型36
3.3.1 BSP模型原理36
3.3.2 实例37
3.4 LogP模型38
3.4.1 LogP模型原理38
3.4.2 实例38
3.5 并行计算模型比较39
3.5.1 PRAM模型和LogP模型的比较39
3.5.2 BSP模型和LogP模型的比较39
习题40
第4章 并行算法设计基础41
4.1 并行算法设计方法41
4.1.1 基本方法41
4.1.2 实例42
4.2 并行算法设计过程44
4.2.1 PCAM设计方法学45
4.2.2 划分45
4.2.3 通信47
4.2.4 组合49
4.2.5 映射51
4.3 并行算法设计技术52
4.4 求和问题的并行算法设计53
习题54
第5章 并行计算性能评测55
5.1 基本概念55
5.1.1 运行时间55
5.1.2 问题规模56
5.1.3 额外开销函数56
5.2 并行系统的性能分析58
5.2.1 加速比58
5.2.2 效率62
5.2.3 开销63
5.2.4 粒度和数据映射对性能的影响63
5.2.5 实例64
5.3 并行系统的可扩展性度量64
5.3.1 可扩展性64
5.3.2 度量指标66
5.3.3 实例68
习题69
第6章 OpenMP多线程并行程序设计70
6.1 OpenMP编程基础70
6.1.1 OpenMP多线程编程模型70
6.1.2 OpenMP程序结构71
6.1.3 使用MicrosoftVisualStudio.NET编写OpenMP程序72
6.2 编译指导语句73
6.2.1 并行域结构——parallel指令74
6.2.2 共享任务结构75
6.2.3 同步结构82
6.2.4 数据处理子句87
6.3 运行时库函数96
6.3.1 基本函数96
6.3.2 运行时库函数的互斥锁支持97
6.4 环境变量99
6.5 实例99
6.5.1 求和99
6.5.2 数值积分103
6.6 OpenMP多线程程序性能分析108
6.6.1 并行额外开销108
6.6.2 线程同步带来的开销110
6.6.3 负载均衡111
6.6.4 OpenMP中的任务调度113
习题119
第7章 MPI消息传递并行程序设计121
7.1 消息传递接口121
7.1.1 简介121
7.1.2 MPI程序特点121
7.2 典型MPI实现——MPICH123
7.2.1 简介123
7.2.2 MPICH的安装和配置123
7.3 MPI编程基础127
7.3.1 简单的MPI程序示例127
7.3.2 MPI程序的4个基本函数128
7.3.3 统计时间128
7.3.4 错误管理128
7.4 MPI的点对点通信129
7.4.1 点对点通信的例子129
7.4.2 MPI_Send()函数130
7.4.3 MPI_Recv()函数130
7.4.4 消息管理七要素131
7.4.5 非阻塞通信133
7.5 MPI群集通信133
7.5.1 一对多群集通信函数133
7.5.2 多对一群集通信函数134
7.5.3 多对多群集通信函数135
7.5.4 同步函数136
7.6 实例137
7.6.1 求和137
7.6.2 数值积分138
习题139
第8章 Java多线程并行程序设计140
8.1 线程140
8.1.1 基本概念140
8.1.2 线程的状态与生命周期141
8.1.3 线程调度与优先级142
8.2 Runnable接口与Thread类142
8.2.1 Runnable接口142
8.2.2 Thread类142
8.3 多线程的实现144
8.3.1 创建Thread类的子类144
8.3.2 实现Runnable接口147
8.3.3 两种方法的比较147
8.4 线程的同步与死锁150
8.4.1 线程同步150
8.4.2 线程死锁156
8.5 实例156
8.5.1 求和156
8.5.2 数值积分159
习题161
第9章 Python并行程序设计162
9.1 Python多线程162
9.2 Python多进程并行程序设计163
9.2.1 Process类实现并行163
9.2.2 Python多进程的通信165
9.2.3 Python多进程的数据共享167
9.2.4 进程间同步169
9.2.5 进程池169
9.2.6 实例171
9.3 PythonGPU并行程序设计174
9.3.1 概述174
9.3.2 常用函数175
9.3.3 神经网络概述179
9.3.4 实例181
习题183
第10章 大数据分布式计算184
10.1 Hadoop分布式计算平台184
10.2 MapReduce分布式并行编程模型185
10.2.1 MapReduce模型简介185
10.2.2 MapReduce工作流程186
10.2.3 WordCount分析188
10.2.4 MapReduce实例189
10.3 Spark分布式计算框架193
10.3.1 并行程序设计策略193
10.3.2 SparkRDD基本操作195
10.3.3 Spark应用程序实例196
习题197
参考文献198
1.1 实例1
1.1.1 求和1
1.1.2 泡茶问题2
1.1.3 图书馆新书上架2
1.1.4 天气预报3
1.1.5 HPCC计划3
1.1.6 教务管理系统3
1.1.7 地球物理石油勘探数据处理系统4
1.2 并行计算基础知识5
1.2.1 并行计算的重要性5
1.2.2 并行计算的定义、并行计算机系统及软件6
1.2.3 并行计算的应用分类6
1.2.4 并行设计的方法7
1.2.5 应用系统的并行性8
1.2.6 并行计算的研究内容8
1.3 并行程序设计策略和模型9
1.3.1 并行程序设计策略9
1.3.2 并行程序设计模型9
1.4 相关概念10
1.4.1 顺序、并发与并行10
1.4.2 进程和线程11
1.4.3 一些基本概念12
习题13
第2章 并行计算机基础14
2.1 并行计算机体系结构14
2.1.1 结点15
2.1.2 互联网络15
2.1.3 并行计算机访存模型19
2.2 并行计算机的分类20
2.2.1 并行计算机的控制结构20
2.2.2 地址空间21
2.2.3 并行计算机系统结构模型21
2.3 多核技术28
2.3.1 多核芯片28
2.3.2 片上多核处理器体系结构28
2.3.3 超线程技术29
2.3.4 基于多核的软件开发30
2.3.5 虚拟化技术30
2.4 GPU技术30
2.4.1 简介30
2.4.2 GPU与并行计算31
习题32
第3章 并行计算模型33
3.1 并行计算模型概述33
3.1.1 串行计算模型与并行计算模型33
3.1.2 并行计算模型与并行算法33
3.1.3 并行计算模型与并行系统中其他模型的关系34
3.2 PRAM模型34
3.2.1 基本PRAM模型34
3.2.2 实例35
3.3 BSP模型36
3.3.1 BSP模型原理36
3.3.2 实例37
3.4 LogP模型38
3.4.1 LogP模型原理38
3.4.2 实例38
3.5 并行计算模型比较39
3.5.1 PRAM模型和LogP模型的比较39
3.5.2 BSP模型和LogP模型的比较39
习题40
第4章 并行算法设计基础41
4.1 并行算法设计方法41
4.1.1 基本方法41
4.1.2 实例42
4.2 并行算法设计过程44
4.2.1 PCAM设计方法学45
4.2.2 划分45
4.2.3 通信47
4.2.4 组合49
4.2.5 映射51
4.3 并行算法设计技术52
4.4 求和问题的并行算法设计53
习题54
第5章 并行计算性能评测55
5.1 基本概念55
5.1.1 运行时间55
5.1.2 问题规模56
5.1.3 额外开销函数56
5.2 并行系统的性能分析58
5.2.1 加速比58
5.2.2 效率62
5.2.3 开销63
5.2.4 粒度和数据映射对性能的影响63
5.2.5 实例64
5.3 并行系统的可扩展性度量64
5.3.1 可扩展性64
5.3.2 度量指标66
5.3.3 实例68
习题69
第6章 OpenMP多线程并行程序设计70
6.1 OpenMP编程基础70
6.1.1 OpenMP多线程编程模型70
6.1.2 OpenMP程序结构71
6.1.3 使用MicrosoftVisualStudio.NET编写OpenMP程序72
6.2 编译指导语句73
6.2.1 并行域结构——parallel指令74
6.2.2 共享任务结构75
6.2.3 同步结构82
6.2.4 数据处理子句87
6.3 运行时库函数96
6.3.1 基本函数96
6.3.2 运行时库函数的互斥锁支持97
6.4 环境变量99
6.5 实例99
6.5.1 求和99
6.5.2 数值积分103
6.6 OpenMP多线程程序性能分析108
6.6.1 并行额外开销108
6.6.2 线程同步带来的开销110
6.6.3 负载均衡111
6.6.4 OpenMP中的任务调度113
习题119
第7章 MPI消息传递并行程序设计121
7.1 消息传递接口121
7.1.1 简介121
7.1.2 MPI程序特点121
7.2 典型MPI实现——MPICH123
7.2.1 简介123
7.2.2 MPICH的安装和配置123
7.3 MPI编程基础127
7.3.1 简单的MPI程序示例127
7.3.2 MPI程序的4个基本函数128
7.3.3 统计时间128
7.3.4 错误管理128
7.4 MPI的点对点通信129
7.4.1 点对点通信的例子129
7.4.2 MPI_Send()函数130
7.4.3 MPI_Recv()函数130
7.4.4 消息管理七要素131
7.4.5 非阻塞通信133
7.5 MPI群集通信133
7.5.1 一对多群集通信函数133
7.5.2 多对一群集通信函数134
7.5.3 多对多群集通信函数135
7.5.4 同步函数136
7.6 实例137
7.6.1 求和137
7.6.2 数值积分138
习题139
第8章 Java多线程并行程序设计140
8.1 线程140
8.1.1 基本概念140
8.1.2 线程的状态与生命周期141
8.1.3 线程调度与优先级142
8.2 Runnable接口与Thread类142
8.2.1 Runnable接口142
8.2.2 Thread类142
8.3 多线程的实现144
8.3.1 创建Thread类的子类144
8.3.2 实现Runnable接口147
8.3.3 两种方法的比较147
8.4 线程的同步与死锁150
8.4.1 线程同步150
8.4.2 线程死锁156
8.5 实例156
8.5.1 求和156
8.5.2 数值积分159
习题161
第9章 Python并行程序设计162
9.1 Python多线程162
9.2 Python多进程并行程序设计163
9.2.1 Process类实现并行163
9.2.2 Python多进程的通信165
9.2.3 Python多进程的数据共享167
9.2.4 进程间同步169
9.2.5 进程池169
9.2.6 实例171
9.3 PythonGPU并行程序设计174
9.3.1 概述174
9.3.2 常用函数175
9.3.3 神经网络概述179
9.3.4 实例181
习题183
第10章 大数据分布式计算184
10.1 Hadoop分布式计算平台184
10.2 MapReduce分布式并行编程模型185
10.2.1 MapReduce模型简介185
10.2.2 MapReduce工作流程186
10.2.3 WordCount分析188
10.2.4 MapReduce实例189
10.3 Spark分布式计算框架193
10.3.1 并行程序设计策略193
10.3.2 SparkRDD基本操作195
10.3.3 Spark应用程序实例196
习题197
参考文献198












