并发的艺术

当前位置:首页 > 网络编程 > 计算机理论基础知识 > 并发的艺术

出版社:机械工业出版社
出版日期:2010年9月
ISBN:9787111309383
作者:Clay Breshears
页数:265页

章节摘录

  加速比简单地说,加速比就是串行执行时间与并行执行时间的比值。我曾经看到过有人用百分比或者倍数来表示这个比值.我本人倾向于以倍数来表示加速比,因为使用百分比可能会导致混淆(你的目的是让经理能够清楚地意识到你超强的编程技术和取得的成就,而不是使他感到困惑)。例如,如果你说并行代码比串行代码要快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,并行计算负责人

内容概要

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

书籍目录

译者序
前言
第1章 并行让程序运行得更快
1.1 你可能会想到的一些问题
1.2 采用线程化方法的4个步骤
1.3 并行算法的背景知识
1.4 共享内存编程与分布式内存编程的比较
1.5 本书采用的并发编程方法
第2章 是否采用并发
2.1 并发算法的设计模型
2.2 哪些算法不能并行
第3章 算法正确性证明与性能衡量
3.1 并行算法的验证
3.2 示例:临界区问题
3.3 性能测试(程序的执行情况如何)
3.4 硬件并行性的发展历史
第4章 多线程程序设计中的8条简单原则
4.1 规则1:找出真正独立的运算
4.2 规则2:在尽可能高的层次上实现并发
4.3 规则3:尽早考虑通过增加处理器核的数量来获得可伸缩性
4.4 规则4:尽可能使用线程安全的库
4.5 规则5:使用正确的多线程模型
4.6 规则6:永远不要假设程序会按照某种特定的顺序执行
4.7 规则7:尽可能使用线程局部存储或者与特定数据相关的锁
4.8 规则8:要敢于对代码进行修改以获得更好的并发性
第5章 线程化库
5.1 隐式线程化
5.2 显式线程化
5.3 还剩下哪些内容没有介绍
5.4 特定领域的库
第6章 并行求和与前缀求和
6.1 并行求和
6.2 前缀求和
6.3 选择
6.4 最后的思考
第7章 映射归约
7.1 并发映射运算
7.2 并发归约运算
7.3 映射归约的应用
7.4 将映射归约作为一般性并发
第8章 排序
8.1 冒泡排序
8.2 奇偶换位排序
8.3 希尔排序
8.4 快速排序
8.5 基数排序
第9章 搜索
9.1 未排序的数据序列
9.2 二分搜索
第10章 图算法
10.1 深度优先搜索
10.2 最短路径问题
10.3 最小生成树
第11章 线程化工具
11.1 调试器
11.2 性能工具
11.3 还剩下什么内容没有介绍
11.4 再接再厉
术语表
封面说明

编辑推荐

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

作者简介

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

图书封面


 并发的艺术下载 精选章节试读



发布书评

 
 


精彩短评 (总计23条)

  •     偏理论化
  •     本书以范例为主,例子选择比较经典,但策略讲解较为粗糙。书中技术的分类不严谨。
  •     从另一个角度讲并发,如果unix好的话看着本书最好了
  •     是并发不是并行,所以OpenMP等共享内存方法较多。作者强烈推荐了Principles of Concurrent and Distributed Programming (2nd Edition)
  •     此书侧重于算法——如何将经典算法做并行化改造。大部分例子使用OpenMP、Windows线程,少数例子使用英特尔TBB、POSIX线程。理论性很强,某些地方翻译的比较生硬,需要仔细研读。
  •     对于想要学习并发算法的同学,还是很有帮助的,略读了一遍,感觉还不错!
  •     基本没啥实际的
  •     由浅入深,前面偏介绍,讲不同的并行模型。后面偏实践,串行和并行实现具体算法。
  •     感觉以粗略介绍为主
  •     目标是并行,却用并发的方式来实现的时候,总感觉太low level。
  •     内容挺适合入门,正确性证明那一章有些水
  •     一般的书。。
  •     我觉得是惨不忍睹!!!理论固本,完全教科书!!!亚马孙2块钱买的,果然便宜没好货呀!
  •     绝对的并发的好书
  •     全书上半部分是概念加原则,下半部分是些例子与经典的并发算法。由于并发与具体业务较为紧密,难有高级别的框架,所以需要实际情况实际处理。
  •     基本原则可以借鉴。
  •     把pthread库用好就行了,别扯这多没用的→_→
  •     代码太丑
  •     书名叫《并发计算入门》还比较合适,叫这个名字实在是愧于艺术。另外,翻译秉承了业界一贯的烂传统……
  •     大体上就是在讲算法的并发实现
  •     总的来说帮助不大,书中的一些思想都是老生常谈了,其实并发的书籍看来看去都讲得差不多,更多的还是并发代码的正确性
  •     感觉尚好。
  •     很失望,写的比教科书还古板,翻译的更是惨不忍睹
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024