书籍详情

多核程序设计技术:通过软件多线程提升性能

多核程序设计技术:通过软件多线程提升性能

作者:Shameem Akhter;Jason Roberts

出版社:电子工业出版社

出版时间:2007-02-01

ISBN:9787121038716

定价:¥49.00

购买这本书可以去
内容简介
  本书从原理、技术、经验和工具等方面为读者提供关于多核程序设计技术的全方位解释。本书由三大部分组成:第一部分包括第1~4章,介绍软件多线程的内容;第二部分包括第5章和第6章,其中讨论用于编写并行程序的常用编程API:第三部分包括其余五章关于多核程序设计的内容,讲述常见并行程序设计问题及解决方法(第7章)、多线程应用程序的调试技术(第8章)、单核与多核处理器基本原理(第9、10章)和所需的Inter公司的软件开发辅助工具(第11章)。本书作者都是长期供职于Inter公司的资深软件工程师和结构师,书中融入了他们自己丰富的软硬件开发经验,可以为面向多核体系结构进行并行程序设计的开发人员提供巨大的帮助。不论对从未接触过并行程序设计的开发人员,还是转型面向多核体系结构进行并行程序设计的开发人员来讲,本书都是一本难得的参考书。
作者简介
  ShameemAkhter是Intel公司的一名平台结构师,主要从事单插槽多核体系结构和性能分析的研究和实现工作.他曾经是Intel软件和解决方案小组的一名资深软件工程师,负责面向桌面和服务器平台的应用程序的优化设计.Shameem获得了一项关于面向受限程序设计的多线程接口的专利技术,该项专利是其硕士论文(计算机科学)的组成部分..JasonRoberts是Intel公司的一名资深软件工程师.在过去的10年之中,Jason从事过大量不同的多线程软件产品的开发工作,这些产品覆盖了桌面平台.手持平台以及嵌入式DSP平台上的各种应用....
目录
第1章 多核体系结构概述  ......1
1.1 促成软件并发的因素  ......2
1.2 并行计算平台  .....5
1.2.1 微处理器中的并行计算 ...7
1.2.2 超线程技术与多核体系结构的联系与区别 ......9
1.2.3 单核与多核平台上的多线程技术对比 .......11
1.3 “性能”解析  .....14
1.3.1 Amdahl定律  ....14
1.3.2 Gustafson定律:增长式回报 .....18
1.4 本章要点  ......19
第2章 多线程技术概述  ....21
2.1 线程的定义  .......22
2.2 线程的层次  .......22
2.2.1 操作系统之上的线程 ...23
2.2.2 操作系统内部的线程 ...26
2.2.3 硬件上的线程  ....30
2.3 线程创建之后的相关行为... .......31
2.4 应用程序设计模型与多线程技术 ......32
2.5 虚拟环境:虚拟机和虚拟平台 ......33
2.5.1 运行时虚拟化  ....33
2.5.2 系统虚拟化  ...33
2.6 本章要点  ......36
第3章 并行程序设计的基本概念 ......37
3.1 多线程设计  .......37
3.1.1 任务分解  .......38
3.1.2 数据分解  .......39
3.1.3 数据流分解  ...40
3.1.4 各种分解方式的比较 ...41
3.2 并行程序设计人员面临的挑战 ......42
3.3 并行程序设计模式  ...43
3.4 误差扩散问题:一个具有启发意义的例子 ...45
3.4.1 误差扩散算法分析  .48
3.4.2 一种并行误差扩散算法 ....48
3.4.3 其他并行误差扩散算法 ....50
3.5 本章要点  ......52
第4章 多线程和并行程序设计结构 .......53
4.1 同步  .....53
4.2 临界段  ......55
4.3 死锁  .....56
4.4 同步原语  ......58
4.4.1 信号量  ......58
4.4.2 锁  ...61
4.4.3 条件变量  .......64
4.5 消息  .....66
4.6 流控制相关的概念  ...69
4.6.1 栅栏  .....69
4.6.2 栅障  .....69
4.7 与实现相关的多线程特征 .....70
4.8 本章要点  ......71
第5章 线程API  ...72
5.1 微软Windows的线程API ....72
5.1.1 Win32/MFC线程API .......72
5.2 微软.NET框架的线程API .......107
5.2.1 创建线程  .....107
5.2.2 管理线程  .....111
5.2.3 线程池  ....113
5.2.4 线程同步  .....119
5.3 POSIX线程  ....122
5.3.1 创建线程  .....123
5.3.2 管理线程  .....125
5.3.3 线程同步  .....126
5.3.4 激发  ...128
5.3.5 编译与链接  ......137
5.4 本章要点  ....137
第6章 OpenMP†:一种可移植的多线程解决方案 ......139
6.1 将循环多线程化所面临的挑战 ....141
6.1.1 循环迭代相关  .......141
6.1.2 数据竞争  .....144
6.1.3 管理共享数据和私有数据 ...145
6.1.4 循环调度与分块  ...147
6.1.5 有效地使用归约  ...151
6.2 降低线程开销  .....154
6.2.1 任务分配区  ......156
6.3 提高程序性能的设计方法 ...157
6.3.1 使用Barrier和Nowait ....157
6.3.2 单线程和多线程交错执行 ...159
6.3.3 数据的Copy-in和Copy-out .....160
6.3.4 保护共享变量的更新操作 ...162
6.3.5 Intel OpenMP任务队列扩展 ....165
6.4 OpenMP库函数  ......167
6.5 OpenMP环境变量  .......169
6.6 编译  ....169
6.7 调试  ...171
6.8 性能  ...173
6.9 本章要点  ....175
第7章 常见并行程序设计问题的解决方法 ......176
7.1 线程过多  ....176
7.2 数据竞争、死锁和活锁 ...179
7.2.1 死锁  ...182
7.3 竞争激烈的锁  .....185
7.3.1 优先级倒置  ......186
7.3.2 锁竞争激烈的解决方法 .......187
7.4 非阻塞算法  .....190
7.4.1 ABA问题  ...192
7.4.2 cache行乒乓现象  .194
7.4.3 存储空间回收问题 .....194
7.4.4 一些建议  .....195
7.5 线程安全函数和库  ......196
7.6 存储问题  ....197
7.6.1 带宽  ...197
7.6.2 cache的利用  ....198
7.6.3 存储竞争  .....201
7.7 cache相关的问题  ...204
7.7.1 伪共享  ....204
7.7.2 存储一致性  ......208
7.7.3 当前的IA-32体系结构 .......209
7.7.4 Itanium®体系结构  211
7.7.5 高级语言  .....214
7.8 避免IA-32上的流水线停顿 ....215
7.9 面向高性能的数据组织 ...216
7.10 本章要点  ....217
第8章 多线程调试技术  .......219
8.1 通用调试技术  .....219
8.1.1 在设计时考虑调试 .....220
8.1.2 使用trace缓冲扩展应用程序 .......222
8.2 Windows多线程程序的调试 ...228
8.2.1 Threads窗口  ....229
8.2.2 跟踪点  ....229
8.2.3 断点过滤  .....230
8.2.4 线程命名  .....231
8.2.5 综合讨论  .....232
8.3 使用GDB进行多线程调试 .....236
8.3.1 线程创建通告  .......237
8.3.2 获取应用程序中所有线程的列表 ......237
8.3.3 设置线程相关的断点 ......238
8.3.4 线程间切换  ......239
8.3.5 向一组线程发送命令 ......240
8.4 本章要点  ....240
第9章 单核处理器基础  .......242
9.1 处理器体系结构基础知识 ...242
9.2 超标量结构与EPIC结构的对比 ......249
9.3 本章要点  ....250
第10章 面向Intel®多核处理器的多线程技术 .......251
10.1 基于硬件的多线程技术 .....251
10.1.1 Intel处理器内的多线程技术 .......255
10.2 超线程技术  .......256
10.2.1 多处理器技术与超线程技术之间的区别 ...258
10.2.2 超线程体系结构  .258
10.3 多核处理器  .......261
10.3.1 多核体系结构知识 ...261
10.3.2 多处理器与多核处理器的对比 ...264
10.3.3 Itanium®体系结构下的多核处理器 .......265
10.4 多个处理器之间的交互 .....269
10.4.1 处理器间通信与多线程程序设计 ....269
10.5 功耗  ......271
10.5.1 功耗公式  ...272
10.5.2 降低功耗  ...273
10.6 多核处理器体系结构未来发展趋势 .......274
10.7 本章要点  .......276
第11章 Intel®软件开发产品  ...278
11.1 概述  ......278
11.1.1 调研  ......279
11.1.2 创建/表达  .......279
11.1.3 调试  ......280
11.1.4 优化  ......280
11.2 Intel®线程检测器  .......280
11.2.1 Intel线程检测器的使用 .....282
11.2.2 使用提示  ...283
11.2.3 使用Intel®线程检测器检查OpenMP代码 ...285
11.3 Intel编译器  .......285
11.3.1 OpenMP†  ...285
11.3.2 软件式推测预计算 ...291
11.3.3 编译器优化和cache优化 .......292
11.4 Intel®调试器  ......293
11.5 Intel库  ......294
11.5.1 Intel®数学核心函数库 ...294
11.5.2 Intel®集成式高性能原函数 .....295
11.5.3 使用并行库时的一些并行程序问题 .....296
11.5.4 未来发展趋势  .....297
11.5.5 Intel®线程构建模块 .......297
11.6 Intel® VTuneTM性能分析器 .......297
11.6.1 寻找热点  ...298
11.6.2 使用调用图来发现可采用多线程实现的地方 299
11.6.3 检查负载平衡  .....300
11.7 Intel®线程直方统计器 ....301
11.8 MPI程序设计  ...302
11.8.1 Intel对MPI的支持 .......303
11.9 本章要点  .......306
术语表   .308
参考文献  .......325
索引   ......330
猜您喜欢

读书导航