分享
 
 
 

Intel Threading Building Blocks编程指南

Intel Threading Building Blocks编程指南  点此进入淘宝搜索页搜索
  特别声明:本站仅为商品信息简介,并不出售商品,您可点击文中链接进入淘宝网搜索页搜索该商品,有任何问题请与具体淘宝商家联系。
  參考價格: 点此进入淘宝搜索页搜索
  分類: 图书,计算机与互联网,程序语言与软件开发,介绍与起步,
  品牌: 仁达敬

基本信息·出版社:机械工业出版社

·页码:323 页

·出版日期:2009年

·ISBN:7111242319/9787111242314

·条形码:9787111242314

·包装版本:1版

·装帧:平装

·开本:16

·正文语种:中文

产品信息有问题吗?请帮我们更新产品信息。

内容简介《IntelThreading Building Blocks编程指南》介绍了如何通过Intel线程构建模块来最大限度地利用多核处理器的强大性能。TBB是一个可移植的C++库,能够运行在Windows、Linux、Macintosh以及UNIX等系统上。《Intel Threading Building Blocks编程指南》阐述了在多线程编程中的关键任务以及如何通过TBB以可移植的和稳定的方式来实现它们。书中包含了大量的示例和丰富的资料,给出了常见的使用模式,揭示了TBB中的精彩之处,并且还提供了一些指导意见,来在不同的并行编程方式上进行选择以获得最佳的性能。《Intel Threading Building Blocks编程指南》的内容包括:

· 充分利用多核系统中并行语义的简单且高效的方式。

· 编写并行程序的关键问题。

· 多线程中的常见模式。

· 用于高效处理的线程安全容器。

· 任务调度。

· 在线程环境中的内存管理。

《Intel Threading Building Blocks编程指南》说明了TBB能够比原始线程更方便地在C++中指定并行语义,同时还可以提升程序的性能、可移植性以及可伸缩性。在开始学习TBB时,并不要求具备并行编程或者多核处理器的经验。任何希望在多核系统上编写软件的程序员,都能够从《Intel Threading Building Blocks编程指南》中获益。

媒体推荐“串行计算的时代已经结束了……《Intel Threading Building Blocks编程指南》很好地介绍了线程构建模块库,无论是初学者还是专家,都能通过《Intel Threading Building Blocks编程指南》清晰地理解并发的复杂性。”

——Charles E.Leiserson,麻省理工大学计算机与人工智能实验室

“我们通常习惯说,首先要使程序正确,然后再提高程序的速度。现在,我们无需这么做。TBB使我们在正确地设计程序的同时,还能提升Maya前台视图的速度。《Intel Threading Building Blocks编程指南》将向你展示如何通过在代码中使用TBB来获得最大的性能提升。”

——Martin Watt,Autodesk公司高级软件工程师

编辑推荐《Intel Threading Building Blocks编程指南》介绍了如何通过Intel线程构建模块来最大限度地利用多核处理器的强大性能。TBB是一个可移植的C++库,能够运行在Windows、Linux、Macintosh以及uNIx等系统上。《Intel Threading Building Blocks编程指南》阐述了在多线程编程中的关键任务以及如何通过TBBE上可移植的和稳定的方式来实现它们。书中包含了大量的示例和丰富的资料,给出了常见的使用模式,揭示了TBB中的精彩之处,并且还提供了一些指导意见,用来在不同的并行编程方式上进行选择以获得最佳的性能。《Intel Threading Building Blocks编程指南》的内容包括:

充分利用多核系统中并行语义的简单且高效的方式。

编写并行程序的关键问题。

多线程中的常见模式。

用于高效处理的线程安全容器。

任务调度。

在线程环境中的内存管理。

《Intel Threading Building Blocks编程指南》说明了TBB能够比原始线程更方便地在c++中指定并行语义,同时还可以提升程序的性能、可移植性以及可伸缩性。在开始学习TBB时,并不要求具备并行编程或者多核处理器的经验。任何希望在多核系统上编写软件的程序员,都能够从《Intel Threading Building Blocks编程指南》中获益。

目录

致中文版读者

InteI线程构建模块首席开发师的笔记

前言

第1章为什么需要线程构建模块

简介

优势

第2章并行思维

并行思维的要素

分解

扩展性与加速性

什么是线程

互斥和锁

正确性

抽象

模式

直觉思维

第3章基本算法

库的初始化和结束

循环的并行化

递归区间的定义

对循环的小结

第4章高级算法

用于流的并行算法

第5章容器

concurrent_queue

concurrent_vector

concurrent_hash_map

第6章可扩展的内存分配

限制

内存分配中的若干问题

内存分配器

替换malloc、new和delete

第7章互斥

何时使用互斥

Mutexes

互斥量

原子操作

第8章计时

第9章任务调度器

基于任务的编程在什么情况下是不合适的

远远好于本地裸线程

初始化库是必需的

斐波纳契(Fibonacci)数列示例

任务调度简介

任务调度的工作原理

任务重现模式

高效利用调度器

任务调度器的接口

任务调度器小结

第10章成功的关键因素

通向成功的关键步骤

松弛串行执行

方法和库的安全并发性

调试版本与发布版本

为了提高效率

支持调试功能

与其他线程软件包混合使用

命名约定

第11章编程示例

Aha!

其他一些关键点

paralleI_for示例

生命游戏

paralleI_reduce示例

统计字符串:使用concurrent_hash_map

Quicksort:可视的任务密取

一种更优的矩阵乘法(Strassen算法)

高级任务编程

网络数据包处理流水线

内存分配

游戏线程示例

物理相互作用的代码和更新的代码

OpenDynamicsEngine

第12章发展历程及相关项目

语言

编译器指令

泛型编程

快存

时间分片的开销

Lambda函数简介

阅读参考

……[看更多目录]

序言计算机领域正在发生着一场计算方式的革命。Intel、AMD以及其他芯片制造商不断推出在单晶片上集成多重处理单元的新型芯片,用于取代过去的单一中心处理器。多核处理器的问世给计算机工业带来更强大的能力,但同时也给软件产业带来更大的挑战:我们不得不面对并发和并行程序这些通常是并行计算的专业人员和高端用户才需要面对的问题。

传统的并行程序设计模型主要分为两大类,一类是共享存储模型,主要是采用多线程,例如目前已成为事实工业标准的OpenMP;另一类是消息传递模型,例如MPI(Message Passing Interface,MPI)。然而,这些方式都存在着一些缺陷,或者是需要特定的语言扩展,或者是在使用上存在困难,从而降低了并行程序的开发效率。

事实上,并行程序的设计目标是挖掘问题求解过程中的并行语义,寻求并行算法与并行机器体系结构的最佳匹配和映射,合理组织并行任务,减少额外消息传递和数据移动开销,而这正是Intel线程构建模块的设计初衷。

与OpenMP、MPI等传统技术相比,线程构建模块主要有以下特点:

1.面向任务编程。任务是比线程更高级的并行抽象,任务与线程的关系就好比高级语言与汇编语言的关系。在使用线程构建模块时,需要设计的是任务而不是线程,这就使你无须关心一些具体的线程细节技术,例如负载均衡,优化调度等。线程构建模块的底层组件已经帮你实现了这些烦琐的工作,它将通过高效的方式将任务映射到线程,并通过任务密取(Task Stealing)来实现自动调度。这正如在用C++编程时无需编写push/pop之类的指令,C++编译器将自动实现这些工作。

2.简单易用。线程构建模块是一个用标准C++和模板实现的库,它既没有包含像OpenMP中的特殊语言扩展,也不是一种全新的编程语言。任何支持ISOC++的编译器都可以直接编译TBB程序,而现有的程序也无需太多修改就可以通过线程构建模块获得并行的速度提升。计算机领域的发展历史已经证明,这一特点是决定技术生命力的重要因素。

3.丰富的辅助开发工具。与线程构建模块结合使用的有许多辅助开发工具,例如Intel线程检查器,Intel线程分析器等。这些辅助工具将极大地提高并行程序的开发效率和调试效率。

本书作者JamesReinders(仁达敬)是Intel软件开发产品部门的首席讲师,他在并行程序设计领域有着丰富的经验。本书融合了作者和Intel线程构建模块开发团队在并行程序设计领域和线程构建模块中的宝贵经验,既有一定的理论深度,又包含了丰富的编程示例。

本书对读者的技术水平要求不高,对于各个层次的读者,本书都将是非常有用的。但如果读者具备一些C++模板以及模板库等方面的知识,那么就更容易地理解本书中的一些概念。多核时代已经来临,并行程序已经被推向了主流地位,这既带来了挑战,也带来了机遇。衷心希望本书能够为并行程序开发人员带来帮助。

参与本书翻译工作的还有李杨、昊汉平、徐光景、童胜汉、陈军、胡凯、刘红、张玮、陈红和李斌。由于译者的时间和水平有限,翻译中的疏漏之处在所难免,还望读者和同行不吝指正。

文摘第1章为什么需要线程构建模块

简介

多核处理器正在变得日益普及,而利用现有的线程软件包来编写一个简单的paralle_for循环却是一项乏味的工作。要编写一个高效的可扩展(scalable)程序则更为困难。可扩展性体现的是这样的概念:随着处理器中核数量的增加,程序的性能能够得到相应的提升。

随着在新推出的处理器中有着越来越多的核,使用线程构建模块来编写程序将帮助你从中获得许多好处。

线程构建模块是一个用来支撑可扩展并行编程的库,它是用标准的C++代码实现的。它不需要专门的语言或者编译器。线程构建模块可以几乎应用于所有处理器或者操作系统上的任何一种c++编译器中,这种强大的功能对于程序员来说是非常有吸引力的。

线程构建模块通过模板来提供常见的并行迭代模式,这使得程序员即使在不具备同步、负载均衡以及快存优化等专门知识的情况下,也能够从多核处理器中获得性能提升。使用线程构建模块编写的程序既能够运行在单核处理器的系统上,也能够运行在多核处理器的系统上。线程构建模块促进了可扩展数据并行编程技术的发展。此外,它还支持嵌套并行,因此你可以很容易地从小型的并行组件中构建出大型的并行组件。在使用这个库时,你需要指定的是任务,而不是线程,然后再通过这个库以高效的方式将任务自动映射到线程。因此,与裸线程(RawThread)相比,线程构建模块能够更方便地实现并行,并获得更优的结果。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
>>返回首頁<<
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有