注册 登录 进入教材巡展
#
  • #

出版时间:2012-11-12

最新印次日期:2023-1

出版社:机械工业出版社

以下为《并行程序设计导论》的配套数字资源,这些资源在您购买图书后将免费附送给您:
试读
  • 机械工业出版社
  • 9787111392842
  • 1-15
  • 46257638-0
  • 16开
  • 2012-11-12
  • 350
  • 工学
  • 计算机类
  • 计算机科学与技术
  • 本科
内容简介
本书全面涵盖了并行软件和硬件的方方面面,深入浅出地介绍如何使用MPI(分布式内存编程)、Pthreads和OpenMP(共享内存编程)编写高效的并行程序。各章节包含了难易程度不同的编程习题。
本书可以用做计算机科学专业低年级本科生的专业课程的教材,也可以作为软件开发人员学习并行程序设计的专业参考书。
目录
目录
An Introduction to Parallel Programming
出版者的话
译者序
本书赞誉
前言
致谢
第1章为什么要并行计算
11为什么需要不断提升的性能
12为什么需要构建并行系统
13为什么需要编写并行程序
14怎样编写并行程序
15我们将做什么
16并发、并行、分布式
17本书的其余部分
18警告
19字体约定
110小结
111习题
第2章并行硬件和并行软件
21背景知识
211冯·诺依曼结构
212进程、多任务及线程
22对冯·诺依曼模型的改进
221Cache基础知识
222Cache映射
223Cache和程序: 一个实例
224虚拟存储器
225指令级并行
226硬件多线程
23并行硬件
231SIMD系统
232MIMD系统
233互连网络
234Cache一致性
235共享内存与分布式内存
24并行软件
241注意事项
242进程或线程的协调
243共享内存
244分布式内存
245混合系统编程
25输入和输出
26性能
261加速比和效率
262阿姆达尔定律
263可扩展性
264计时
27并行程序设计
28编写和运行并行程序
29假设
210小结
2101串行系统
2102并行硬件
2103并行软件
2104输入和输出
2105性能
2106并行程序设计
2107假设
211习题
第3章用MPI进行分布式内存编程
31预备知识
311编译与执行
312MPI程序
313MPI_Init和MPI_Finalize
314通信子、MPI_Comm_size和MPI_Comm_rank
315SPMD程序
316通信
317MPI_Send
318MPI_Recv
319消息匹配
3110status_p参数
3111MPI_Send和MPI_Recv的语义
3112潜在的陷阱
32用MPI来实现梯形积分法
321梯形积分法
322并行化梯形积分法
33I/O处理
331输出
332输入
34集合通信
341树形结构通信
342MPI_Reduce
343集合通信与点对点通信
344MPI_Allreduce
345广播
346数据分发
347散射
348聚集
349全局聚集
35MPI的派生数据类型
36MPI程序的性能评估
361计时
362结果
363加速比和效率
364可扩展性
37并行排序算法
371简单的串行排序算法
372并行奇偶交换排序
373MPI程序的安全性
374并行奇偶交换排序算法的重要内容
38小结
39习题
310编程作业
第4章用Pthreads进行共享内存编程
41进程、线程和Pthreads
42“Hello,World”程序
421执行
422准备工作
423启动线程
424运行线程
425停止线程
426错误检查
427启动线程的其他方法
43矩阵-向量乘法
44临界区
45忙等待
46互斥量
47生产者-消费者同步和信号量
48路障和条件变量
481忙等待和互斥量
482信号量
483条件变量
484Pthreads路障
49读写锁
491链表函数
492多线程链表
493Pthreads读写锁
494不同实现方案的性能
495实现读写锁
410缓存、缓存一致性和伪共享
411线程安全性
412小结
413习题
414编程作业
第5章用OpenMP进行共享内存编程
51预备知识
511编译和运行OpenMP程序
512程序
513错误检查
52梯形积分法
53变量的作用域
54归约子句
55parallel for指令
551警告
552数据依赖性
553寻找循环依赖
554π值估计
555关于作用域的更多问题
56更多关于OpenMP的循环:排序
561冒泡排序
562奇偶变换排序
57循环调度
571schedule子句
572static调度类型
573dynamic和guided调度类型
574runtime调度类型
575调度选择
58生产者和消费者问题
581队列
582消息传递
583发送消息
584接收消息
585终止检测
586启动
587atomic指令
588临界区和锁
589在消息传递程序中使用锁
5810critical指令、atomic指令、锁的比较
5811经验
59缓存、缓存一致性、伪共享
510线程安全性
511小结
512习题
513编程作业
第6章并行程序开发
61n体问题的两种解决方法
611问题
612两个串行程序
613并行化n体算法
614关于I/O
615用OpenMP并行化基本算法
616用OpenMP并行化简化算法
617评估OpenMP程序
618用Pthreads并行化算法
619用MPI并行化基本算法
6110用MPI并行化简化算法
6111MPI程序的性能
62树形搜索
621递归的深度优先搜索
622非递归的深度优先搜索
623串行实现所用的数据结构
624串行实现的性能
625树形搜索的并行化
626采用Pthreads实现的静态并行化树搜索
627采用Pthreads实现的动态并行化树搜索
628Pthreads树搜索程序的评估
629采用OpenMp实现的并行化树搜索程序
6210OpenMp实现的性能
6211采用MPI和静态划分来实现树搜索
6212采用MPI和动态划分来实现树搜索
63忠告
64选择哪个API
65小结
651Pthreads和OpenMP
652MPI
66习题
67编程作业
第7章接下来的学习方向
参考文献
索引