第一图书网

并发的艺术

Clay Breshears 机械工业出版社
出版时间:

2010年9月  

出版社:

机械工业出版社  

作者:

Clay Breshears  

页数:

265  

译者:

聂雪军  

Tag标签:

无  

内容概要

  《并发的艺术》的前面部分给出了一个完备的并发程序开发框架,包括并发的基础理论知识、不同并发模型的选择与适用环境、编写并发程序的基本步骤,并发算法的正确性证明与性能评价,以及在编写并发程序时遵循的一些指导原则等。这些内容使读者能够对并发编程有基本的了解,在开始动手编写并发代码之前首先作出全面的思考,这样不仅可以提高编码的效率,而且可以减少代码中的错误以及后续的修改/维护工作。

作者简介

Clay Breshears博士,目前是一位课程设计师,主要从事多核与多线程方面的编程和培训。

书籍目录

前言第1章 并行让程序运行得更快你可能会想到的一些问题采用线程化方法的4个步骤并行算法的背景知识共享内存编程与分布式内存编程的比较本书采用的并发编程方法第2章 是否采用并发并发算法的设计模型哪些算法不能并行第3章 算法正确性证明与性能衡量并行算法的验证示例:临界区问题性能测试(程序的执行情况如何)硬件并行性的发展历史第4章 多线程程序设计中的8条简单规则规则1:找出真正独立的运算规则2:在尽可能高的层次上实现并发规则3:尽早考虑通过增加处理器核的数量来获得可伸缩性规则4:尽可能使用线程安全的库规则5:使用正确的多线程模型规则6:永远不要假设程序会按照某种特定的顺序执行规则7:尽可能使用线程局部存储或者与特定数据相关的锁规则8:要敢于对代码进行修改以获得更好的并发性小结第5章 线程化库隐式线程化显式线程化其他主题特定领域的库第6章 并行求和与前缀求和并行求和前缀求和选择最后的思考第7章 映射归约并发映射运算并发归约运算映射归约的应用映射归约作为一般性并发第8章 排序冒泡排序奇偶换位排序希尔排序快速排序基数排序第9章 搜索未排序的数据序列二分搜索第10章 图算法深度优先搜索最短路径问题最小生成树第11章 线程化工具调试器性能工具其他主题再接再厉术语表照片说明

章节摘录

  加速比简单地说,加速比就是串行执行时间与并行执行时间的比值。我曾经看到过有人用百分比或者倍数来表示这个比值.我本人倾向于以倍数来表示加速比,因为使用百分比可能会导致混淆(你的目的是让经理能够清楚地意识到你超强的编程技术和取得的成就,而不是使他感到困惑)。例如,如果你说并行代码比串行代码要快200%,那么这表示并行代码的执行时间是串行代码执行时间的一半还是1/37加速比为105%是表示并行运行时间与串行运行时间几乎相当,还是速度提升为原有的两倍?加速比的基线是0还是100%?而另一方面,如果你说并行程序的加速比为2x,那么很明显表示执行时间为原来的一半(也就是,在将串行代码执行一遍的时间里,可以将并行代码执行两遍)。在计算加速比时,要确保进行比较的对象是最优的串行算法和代码。在后面的几章中,我们将看到一些编写得较差的串行算法更容易被转换为并行算法。即使情况如此,你在计算加速比时还是应该使用最快的串行算法作为比较对象。当可以使用一种更好的串行算法时,谁还会愿意使用更差的?我假设在你实施并发化的软件项目中都已经采用了最优的串行算法。即使没有使用,那么最优的串行代码仍然是需要考虑的比较对象。需要知道的是,加速比可以(并且应该)随着程序所使用处理器核数量的变化而变化。通过观察加速比随着处理器核增加的变化情况,你可以更好地了解代码的可伸缩性。在图3.2中给出了几个加速比的示例。线性加速比(实线)是指,加速比的数值等于处理器核的数量(例如,加速比为4x表示4个处理器核)。对于可伸缩性良好的应用程序,加速比增加的速率应该接近或者等于处理器核增加的速率(图3.2中的长点线).也就是,如果你将处理器核数量翻番,那么加速比应该为2。如果加速比的增长无法跟上处理器核数量的增长(短点线),那么应用程序在数据集上表现出的可伸缩性就不是很好。   ……

媒体关注与评论

  “这是一本非常棒的书,从它的名字就可以看出来。虽然你教的可能并不是艺术,但你可以让学生了解一下专家的思维和方法。我在超级计算公司工作过30余年的时间,目前在学术界从事研究也有将近10年的时间了,因此我可以肯定地告诉各位读者,这本书的内容绝对值得一读。”    ——Tom Murphy,Contra Costa大学,计算机科学委员会主席   “终于出现了一本专门介绍并发性的书。本书介绍了大量实用的重要算法,并且采用多种方 式对算法进行分析,重点讲解了如何通过各种并行编程技术来提升程序的性能。”    ——Mike Pearce,Intel Software Network,并行计算负责人


编辑推荐

  《并发的艺术》:分析在共享内存模型与分布式内存模型之间的编程差异。  学习如何设计多线程程序,包括对程序的测试和调优。  了解如何最有效地使用各种不同的线程化机制,包括Windows线程、POSIX线程、  OpenMP以及Intel Threading Building Blocks。  掌握如何实现各种并发算法,包括排序、搜索、图以及其他一些实用的计算。  如果你希望通过并发编程来充分发挥多核处理器的强大功能,那么《并发的艺术》将为你提供所需的理论知识和实际经验。《并发的艺术》是为数不多的几本介绍如何在多核处理器的共享内存模型中实现算法的书籍之一,它并非仅仅介绍一些理论模型或者分布式内存架构。《并发的艺术》详细分析了各种示例程序,这些内容非常有助于你将串行代码转换为并行代码,此外还介绍了如何避免一些常见的错误。《并发的艺术》的作者是Intel公司的一位资深工程师,他从事并发编程已经有20多年的时间,《并发的艺术》将帮助你.奉书还介绍了如何在算法中实现高可伸缩性,使得算法能够充分发挥将来包含更多核处理器的强大功能。对于开发并行代码算法的程序员来说,《并发的艺术》是必不可少的。

图书封面

图书标签Tags

广告

下载页面


并发的艺术 PDF格式下载



相关图书