本书全面涵盖了并行软件和硬件的方方面面,深入浅出地介绍如何使用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章接下来的学习方向
参考文献
索引
电脑软硬件维修从新手到高手-(图解视频版)-随书赠送DVD 本书特色 本书是指导电脑维修人员快速掌握电脑软硬件维修技能的专业书籍,由资深电脑软硬件维修工程师...
《Java面向对象编程》内容由浅入深,紧密结合实际,利用大量典型实例,详细讲解Java面向对象的编程思想、编程语法和设计模式,介
《短距离无线数据通信入门与实战》分别以目前世界上广泛应用的8051内核无线片上系统(SoC)NRF9E5、NRF24E1、CCl010以及无线芯片NR
《C语言的科学和艺术》是计算机科学的经典教材,介绍了计算机科学的基础知识和程序设计的专门知识。《C语言的科学和艺术》以介绍
{BookDescription}http://www.peachpit.com/title/0321534107Therearebasicallytwotyp...
“非常优秀!这绝对是UI设计模式领域最好的书,也是近年来交互设计领域最好的新书之一。本书清楚、简洁、引人入胜,既包括基础知
《出发!可爱的虫虫世界》内容简介:“蛋蛋学校万物探秘之旅”是国内原创的一套极富趣味性和知识性的探索万物的科普漫画绘本。讲述
《人机情感交互》在详细介绍人机情感交互概念的基础上,分析了当前人机情感交互的研究前沿,特别是在情感模型、人脸表情交互、语
《读文心雕龙手记》内容简介:本书收入十三篇札记和两篇附录,写于不同时期,是作者二十多年精研《文心雕龙》的会心之作。《文心雕
《Struts2技术内幕:深入解析Struts架构设计与实现原理》内容简介:《Struts2技术内幕:深入解析Struts2架构设计与实现原理》由国内
3天学会电脑组装-(附赠多媒体光盘1张) 本书特色 为避免电脑入门者学习电脑的盲目性,编者在大量实践的基础上总结自己的学习经验并经过精心设计,将组装电脑的整个过...
《Maple教程》详细地介绍了Maple的基本功能,主要包括数:数值计算,解方程,微积分计算,向量及矩阵计算,数据处理等,书中给出
《最新英语专业考研》内容简介:中国是一个正在崛起的大国,这个崛起大国背后的推动力是什么?是占世界五分之一的人口?是悠久的历
《城市建设项目业主管理指南》内容简介:本书就城市建设项目生命周期各阶段业主管理内容、应遵循的程序、管理方法和深度分十八章进
《中国移动通信营销案例精选》重点关注中国移动通信的市场战略和市场运作模式。从“沟通从心开始”到“动感地带”客户品牌推出,
作者介绍:ChasEmerick是软件公司Snowtideinformatics的创始人。自2008年以来,致力于Clojure语言本身以及一些开源项目的开发;...
逻辑与计算机科学哲学 内容简介 本书是作者自2000年以来在科学技术哲学领域研究的一些成果集,分为逻辑与思维和计算机科学哲学两编,主要包括归纳思维、逻辑真探讨、...
本书每章为一个主题,实验内容安排紧扣大学算法和数学的教学,用程序设计竞赛中的算法和数学试题作为实验试题,将算法和数学的教
Web1.0,这个概念对很多人来说,早已不再新鲜。没错,Web1.0是最传统的网络平台。Web2.0,这个概念对很多网络爱好者来说也已经不
设计与艺术关系密切,艺术史家往往是设计史家,本书是一个明证。以艺术史家著称的贡布里希对设计的思考与论述同样既引人入胜,又