搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
并发的艺术
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787111309383
  • 作      者:
    Clay Breshears著
  • 出 版 社 :
    机械工业出版社
  • 出版日期:
    2010
收藏
编辑推荐
    《并发的艺术》:分析在共享内存模型与分布式内存模型之间的编程差异。<br>    学习如何设计多线程程序,包括对程序的测试和调优。<br>    了解如何最有效地使用各种不同的线程化机制,包括Windows线程、POSIX线程、<br>    OpenMP以及Intel Threading Building Blocks。<br>    掌握如何实现各种并发算法,包括排序、搜索、图以及其他一些实用的计算。<br>    如果你希望通过并发编程来充分发挥多核处理器的强大功能,那么《并发的艺术》将为你提供所需的理论知识和实际经验。《并发的艺术》是为数不多的几本介绍如何在多核处理器的共享内存模型中实现算法的书籍之一,它并非仅仅介绍一些理论模型或者分布式内存架构。《并发的艺术》详细分析了各种示例程序,这些内容非常有助于你将串行代码转换为并行代码,此外还介绍了如何避免一些常见的错误。《并发的艺术》的作者是Intel公司的一位资深工程师,他从事并发编程已经有20多年的时间,《并发的艺术》将帮助你.奉书还介绍了如何在算法中实现高可伸缩性,使得算法能够充分发挥将来包含更多核处理器的强大功能。对于开发并行代码算法的程序员来说,《并发的艺术》是必不可少的。
展开
内容介绍
    《并发的艺术》的前面部分给出了一个完备的并发程序开发框架,包括并发的基础理论知识、不同并发模型的选择与适用环境、编写并发程序的基本步骤,并发算法的正确性证明与性能评价,以及在编写并发程序时遵循的一些指导原则等。这些内容使读者能够对并发编程有基本的了解,在开始动手编写并发代码之前首先作出全面的思考,这样不仅可以提高编码的效率,而且可以减少代码中的错误以及后续的修改/维护工作。
展开
精彩书评
    “这是一本非常棒的书,从它的名字就可以看出来。虽然你教的可能并不是艺术,但你可以让学生了解一下专家的思维和方法。我在超级计算公司工作过30余年的时间,目前在学术界从事研究也有将近10年的时间了,因此我可以肯定地告诉各位读者,这本书的内容绝对值得一读。”<br>        ——Tom Murphy,Contra Costa大学,计算机科学委员会主席 <br><br>    “终于出现了一本专门介绍并发性的书。本书介绍了大量实用的重要算法,并且采用多种方 式对算法进行分析,重点讲解了如何通过各种并行编程技术来提升程序的性能。”<br>        ——Mike Pearce,Intel Software Network,并行计算负责人
展开
精彩书摘
    加速比简单地说,加速比就是串行执行时间与并行执行时间的比值。我曾经看到过有人用百分比或者倍数来表示这个比值.我本人倾向于以倍数来表示加速比,因为使用百分比可能会导致混淆(你的目的是让经理能够清楚地意识到你超强的编程技术和取得的成就,而不是使他感到困惑)。例如,如果你说并行代码比串行代码要快200%,那么这表示并行代码的执行时间是串行代码执行时间的一半还是1/37加速比为105%是表示并行运行时间与串行运行时间几乎相当,还是速度提升为原有的两倍?加速比的基线是0还是100%?而另一方面,如果你说并行程序的加速比为2x,那么很明显表示执行时间为原来的一半(也就是,在将串行代码执行一遍的时间里,可以将并行代码执行两遍)。在计算加速比时,要确保进行比较的对象是最优的串行算法和代码。在后面的几章中,我们将看到一些编写得较差的串行算法更容易被转换为并行算法。即使情况如此,你在计算加速比时还是应该使用最快的串行算法作为比较对象。当可以使用一种更好的串行算法时,谁还会愿意使用更差的?我假设在你实施并发化的软件项目中都已经采用了最优的串行算法。即使没有使用,那么最优的串行代码仍然是需要考虑的比较对象。需要知道的是,加速比可以(并且应该)随着程序所使用处理器核数量的变化而变化。通过观察加速比随着处理器核增加的变化情况,你可以更好地了解代码的可伸缩性。在图3.2中给出了几个加速比的示例。线性加速比(实线)是指,加速比的数值等于处理器核的数量(例如,加速比为4x表示4个处理器核)。对于可伸缩性良好的应用程序,加速比增加的速率应该接近或者等于处理器核增加的速率(图3.2中的长点线).也就是,如果你将处理器核数量翻番,那么加速比应该为2。如果加速比的增长无法跟上处理器核数量的增长(短点线),那么应用程序在数据集上表现出的可伸缩性就不是很好。 <br>    ……
展开
目录
前言<br>第1章 并行让程序运行得更快<br>你可能会想到的一些问题<br>采用线程化方法的4个步骤<br>并行算法的背景知识<br>共享内存编程与分布式内存编程的比较<br>本书采用的并发编程方法<br><br>第2章 是否采用并发<br>并发算法的设计模型<br>哪些算法不能并行<br><br>第3章 算法正确性证明与性能衡量<br>并行算法的验证<br>示例:临界区问题<br>性能测试(程序的执行情况如何)<br>硬件并行性的发展历史<br><br>第4章 多线程程序设计中的8条简单规则<br>规则1:找出真正独立的运算<br>规则2:在尽可能高的层次上实现并发<br>规则3:尽早考虑通过增加处理器核的数量来获得可伸缩性<br>规则4:尽可能使用线程安全的库<br>规则5:使用正确的多线程模型<br>规则6:永远不要假设程序会按照某种特定的顺序执行<br>规则7:尽可能使用线程局部存储或者与特定数据相关的锁<br>规则8:要敢于对代码进行修改以获得更好的并发性<br>小结<br><br>第5章 线程化库<br>隐式线程化<br>显式线程化<br>其他主题<br>特定领域的库<br><br>第6章 并行求和与前缀求和<br>并行求和<br>前缀求和<br>选择<br>最后的思考<br><br>第7章 映射归约<br>并发映射运算<br>并发归约运算<br>映射归约的应用<br>映射归约作为一般性并发<br><br>第8章 排序<br>冒泡排序<br>奇偶换位排序<br>希尔排序<br>快速排序<br>基数排序<br><br>第9章 搜索<br>未排序的数据序列<br>二分搜索<br><br>第10章 图算法<br>深度优先搜索<br>最短路径问题<br>最小生成树<br><br>第11章 线程化工具<br>调试器<br>性能工具<br>其他主题<br>再接再厉<br>术语表<br>照片说明
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证