本书全面涵盖了并行软件和硬件的方方面面,深入浅出地介绍如何使用mpi(分布式内存编程)、pthreads和openmp(共享内存编程)编写高效的并行程序。各章节包含了难易程度不同的编程习题。
本书可以用做计算机科学专业低年级本科生的专业课程的教材,也可以作为软件开发人员学习并行程序设计的专业参考书。
《并行程序设计导论》
出版者的话
译者序
本书赞誉
前言
致谢
第1章为什么要并行计算
1.1为什么需要不断提升的性能
1.2为什么需要构建并行系统
1.3为什么需要编写并行程序
1.4怎样编写并行程序
1.5我们将做什么
1.6并发、并行、分布式
1.7本书的其余部分
1.8警告
1.9字体约定
1.10小结
1.11习题
第2章并行硬件和并行软件
2.1背景知识
.2.1.1冯·诺依曼结构
2.1.2进程、多任务及线程
2.2对冯·诺依曼模型的改进
2.2.1cache基础知识
2.2.2cache映射
2.2.3cache和程序: 一个实例
2.2.4虚拟存储器
2.2.5指令级并行
2.2.6硬件多线程
2.3并行硬件
2.3.1simd系统
2.3.2mimd系统
2.3.3互连网络
2.3.4cache一致性
2.3.5共享内存与分布式内存
2.4并行软件
2.4.1注意事项
2.4.2进程或线程的协调
2.4.3共享内存
2.4.4分布式内存
2.4.5混合系统编程
2.5输入和输出
2.6性能
2.6.1加速比和效率
2.6.2阿姆达尔定律
2.6.3可扩展性
2.6.4计时
2.7并行程序设计
2.8编写和运行并行程序
2.9假设
2.10小结
2.10.1串行系统
2.10.2并行硬件
2.10.3并行软件
2.10.4输入和输出
2.10.5性能
2.10.6并行程序设计
2.10.7假设
2.11习题
第3章用mpi进行分布式内存编程
3.1预备知识
3.1.1编译与执行
3.1.2mpi程序
3.1.3mpi_init和mpi_finalize
3.1.4通信子、mpi_comm_size和mpi_comm_rank
3.1.5spmd程序
3.1.6通信
3.1.7mpi_send
3.1.8mpi_recv
3.1.9消息匹配
3.1.10status_p参数
3.1.11mpi_send和mpi_recv的语义
3.1.12潜在的陷阱
3.2用mpi来实现梯形积分法
3.2.1梯形积分法
3.2.2并行化梯形积分法
3.3i/o处理
3.3.1输出
3.3.2输入
3.4集合通信
3.4.1树形结构通信
3.4.2mpi_reduce
3.4.3集合通信与点对点通信
3.4.4mpi_allreduce
3.4.5广播
3.4.6数据分发
3.4.7散射
3.4.8聚集
3.4.9全局聚集
3.5mpi的派生数据类型
3.6mpi程序的性能评估
3.6.1计时
3.6.2结果
3.6.3加速比和效率
3.6.4可扩展性
3.7并行排序算法
3.7.1简单的串行排序算法
3.7.2并行奇偶交换排序
3.7.3mpi程序的安全性
3.7.4并行奇偶交换排序算法的重要内容
3.8小结
3.9习题
3.10编程作业
第4章用pthreads进行共享内存编程
4.1进程、线程和pthreads
4.2“hello,world”程序
4.2.1执行
4.2.2准备工作
4.2.3启动线程
4.2.4运行线程
4.2.5停止线程
4.2.6错误检查
4.2.7启动线程的其他方法
4.3矩阵-向量乘法
4.4临界区
4.5忙等待
4.6互斥量
4.7生产者-消费者同步和信号量
4.8路障和条件变量
4.8.1忙等待和互斥量
4.8.2信号量
4.8.3条件变量
4.8.4pthreads路障
4.9读写锁
4.9.1链表函数
4.9.2多线程链表
4.9.3pthreads读写锁
4.9.4不同实现方案的性能
4.9.5实现读写锁
4.10缓存、缓存一致性和伪共享
4.11线程安全性
4.12小结
4.13习题
4.14编程作业
第5章用openmp进行共享内存编程
5.1预备知识
5.1.1编译和运行openmp程序
5.1.2程序
5.1.3错误检查
5.2梯形积分法
5.3变量的作用域
5.4归约子句
5.5parallel for指令
5.5.1警告
5.5.2数据依赖性
5.5.3寻找循环依赖
5.5.4π值估计
5.5.5关于作用域的更多问题
5.6更多关于openmp的循环:排序
5.6.1冒泡排序
5.6.2奇偶变换排序
5.7循环调度
5.7.1schedule子句
5.7.2static调度类型
5.7.3dynamic和guided调度类型
5.7.4runtime调度类型
5.7.5调度选择
5.8生产者和消费者问题
5.8.1队列
5.8.2消息传递
5.8.3发送消息
5.8.4接收消息
5.8.5终止检测
5.8.6启动
5.8.7atomic指令
5.8.8临界区和锁
5.8.9在消息传递程序中使用锁
5.8.10critical指令、atomic指令、锁的比较
5.8.11经验
5.9缓存、缓存一致性、伪共享
5.10线程安全性
5.11小结
5.12习题
5.13编程作业
第6章并行程序开发
6.1n体问题的两种解决方法
6.1.1问题
6.1.2两个串行程序
6.1.3并行化n体算法
6.1.4关于i/o
6.1.5用openmp并行化基本算法
6.1.6用openmp并行化简化算法
6.1.7评估openmp程序
6.1.8用pthreads并行化算法
6.1.9用mpi并行化基本算法
6.1.10用mpi并行化简化算法
6.1.11mpi程序的性能
6.2树形搜索
6.2.1递归的深度优先搜索
6.2.2非递归的深度优先搜索
6.2.3串行实现所用的数据结构
6.2.4串行实现的性能
6.2.5树形搜索的并行化
6.2.6采用pthreads实现的静态并行化树搜索
6.2.7采用pthreads实现的动态并行化树搜索
6.2.8pthreads树搜索程序的评估
6.2.9采用openmp实现的并行化树搜索程序
6.2.10openmp实现的性能
6.2.11采用mpi和静态划分来实现树搜索
6.2.12采用mpi和动态划分来实现树搜索
6.3忠告
6.4选择哪个api
6.5小结
6.5.1pthreads和openmp
6.5.2mpi
6.6习题
6.7编程作业
第7章接下来的学习方向
参考文献
索引
《拯救社交脸盲症》内容简介:本书是一部激励心灵的励志作品,本书主要通过社交心理学、社交技巧学、社交口才学等诸多成功要素,深
《进步的回退》内容简介:本书分为演讲、对话、记谈录三部分。主要内容包括:进步的回退;冷战后:文学写作新的处境;现代汉语再认
看遍了千篇一律的客厅、沙发、电视墙,住宅还有更多的可能性么?卫生间在居室中没有自然采光,如何让它自然亮起来?阳台除了种花
《天神和人》内容简介:本书讲述中西方的神话故事,主要是西方的希腊神话中宇宙体系的构建者和中华文明的古老神话中关于宇宙形成的
《原来宋词可以这样读》内容简介:所谓词者,句有长短,然情意绵绵,翻开来,爱情、亲情、思乡情,众情毕备;王公、文人、妓女,世
《界:我奋斗的路》内容简介:本书为自传,分农村锻炼篇、香港学艺篇、回沪创业篇、回馈故乡篇四个部分,讲述了作者从上海到浙江慈
《VisualC#2005从入门到精通/微软技术丛书》:微软技术丛书系列之一,建议一读!MicrosoftVisualC#功能强大、使用简单。本书全面介
从零开始学习Cocoa的首选图书.涵盖了最新的Mac编程技术高级MacOSX开发者们联手强烈推荐..MacOSX编程图书的标杆AaronHillegass多年
C和C++程序设计教程 本书特色 反映当前教学内容,突出理论知识的应用和实践技能的培养。注重社会发展和就业需求,培养适应职业岗位的综合能力,强化学生的应用技能。...
《一本书读懂内部审计》内容简介:内部审计工作涉及公司经营的每一个环节,小到一份经济合同、一张财务报表,大到业务流程、部门绩
《快学熟用D3》内容简介:本书所讲的D3.js其实是数据可视化这一门类的库,市面上讲解它的书籍早已汗牛充栋。这本书虽然名字是“D3
《小学主题式综合活动课程案例选编》内容简介:本书是上海市开展小学主题式综合活动课程研究和实施工作以来汇总的首个学校案例集。
《为什么大象不听话》内容简介:即使骑象人手握缰绳,大象却依旧野性难驯,根本不听他的。在每个人的身体里都存在着类似“象与骑象
中文版Dreamweaver+Flash+Photoshop网页制作从入门到精通-CS5版-随书附赠光盘 本书特色 16大核心技术精解本书体系结构完整,由浅入深...
《海蒂》内容简介:《海蒂》是瑞士儿童文学作家给翰娜·斯比丽的代表作,被视为世界儿童文学经典作品之一。分为《海蒂的学习和生活
《Google改变生活》系统地介绍了Google公司推出的一系列与我们生活息息相关的软件和服务的使用方法,并精选目前网络上最实用、最
探索性数据分析:基于JMP软件 本书特色 统计学是一门涉及面广且在不断发展的学科,jmp作为一个分析软件也是如此。但是一本书所能包含的内容是有限的,且不可能面面...
人人都爱PS:中文版PHOTOSHOP CC技术教程(实例版) 本书特色 1. 配套视频讲解,手把手教您学习 本书配备了大量的同步教学视频,涵盖全书几乎所有实例...
室内设计制图讲座,ISBN:9787302249481,作者:留美幸著目录 第1章室内设计新手必备基本概念1-1绘置平面配置图的准备功课1-2现
KEYBENEFIT:Providesabroadsurveyofdesigning,implementing,managing,maintaining,tra...