图书介绍

并行算法设计与性能优化2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

并行算法设计与性能优化
  • 刘文志著 著
  • 出版社: 北京:机械工业出版社
  • ISBN:9787111501022
  • 出版时间:2015
  • 标注页数:202页
  • 文件大小:81MB
  • 文件页数:221页
  • 主题词:并行算法-算法设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

并行算法设计与性能优化PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 绪论1

1.1 并行和向量化的作用2

1.2 为什么要并行或向量化3

1.3 为什么向量化或并行难4

1.4 并行的替代方法9

1.5 进程、线程与处理器10

1.6 并行硬件平台13

1.7 向量化和多核技术不是万能的17

1.8 本章小结18

第2章 现代处理器特性19

2.1 指令级并行20

2.1.1 指令流水线20

2.1.2 乱序执行22

2.1.3 指令多发射22

2.1.4 分支预测23

2.1.5 VLIW23

2.2 向量化并行24

2.2.1 SIMD24

2.2.2 SIMT25

2.3 线程级并行25

2.3.1 内核线程和用户线程26

2.3.2 多线程编程库26

2.3.3 多核上多线程并行要注意的问题27

2.3.4 多线程程序在多核和单核上运行的不同28

2.4 缓存28

2.4.1 缓存层次结构29

2.4.2 缓存一致性30

2.4.3 缓冲不命中31

2.4.4 写缓存32

2.4.5 越过缓存33

2.4.6 硬件预取34

2.4.7 缓存结构34

2.4.8 映射策略35

2.5 虚拟存储器和TLB36

2.6 NUMA技术37

2.7 本章小结39

第3章 算法性能和程序性能的度量与分析40

3.1 算法分析的性能度量标准40

3.1.1 时间复杂度与空间复杂度41

3.1.2 实现复杂度43

3.2 程序和指令的性能度量标准47

3.3 程序性能优化的度量标准52

3.3.1 加速比与并行效率52

3.3.2 Amdahl定律和Gustafson定律53

3.4 程序性能分析实用工具54

3.5 本章小结60

第4章 串行代码性能优化61

4.1 系统级别62

4.2 应用级别65

4.3 算法级别68

4.4 函数级别71

4.4.1 函数调用参数71

4.4.2 内联小函数72

4.5 循环级别72

4.5.1 循环展开72

4.5.2 循环累积73

4.5.3 循环合并74

4.5.4 循环拆分74

4.6 语句级别75

4.6.1 减少内存读写75

4.6.2 选用尽量小的数据类型76

4.6.3 结构体对齐77

4.6.4 表达式移除78

4.6.5 分支优化78

4.6.6 优化交换性能82

4.7 指令级别83

4.8 本章小结84

第5章 依赖分析86

5.1 指令级依赖87

5.1.1 结构化依赖87

5.1.2 数据依赖88

5.1.3 控制依赖89

5.2 循环级依赖90

5.2.1 循环数据依赖90

5.2.2 循环控制依赖92

5.3 寄存器重命名93

5.4 本章小结94

第6章 并行编程模型及环境95

6.1 并行编程模型95

6.1.1 指令级并行96

6.1.2 向量化并行97

6.1.3 易并行98

6.1.4 任务并行99

6.1.5 数据并行100

6.1.6 循环并行化101

6.1.7 流水线并行102

6.1.8 区域分解并行103

6.1.9 隐式和显式并行化104

6.1.10 SPMD104

6.1.11 共享存储器并行105

6.1.12 分布式存储器并行105

6.2 常见并行编程环境105

6.2.1 MPI106

6.2.2 OpenMP108

6.2.3 fork/pthread108

6.2.4 CUDA109

6.2.5 OpenCL109

6.2.6 OpenACC110

6.2.7 NEON内置函数111

6.2.8 SSE/AVX内置函数111

6.3 本章小结111

第7章 并行算法设计方法114

7.1 划分114

7.1.1 分而治之115

7.1.2 划分原则116

7.1.3 常见划分方法116

7.1.4 并行性和局部性117

7.2 通信118

7.2.1 操作的原子性119

7.2.2 结果的可见性120

7.2.3 顺序一致性121

7.2.4 函数的可重入与线程安全122

7.2.5 volatile关键字122

7.2.6 锁123

7.2.7 临界区126

7.2.8 原子操作127

7.2.9 栅栏128

7.3 结果归并129

7.4 负载均衡129

7.4.1 静态负载均衡130

7.4.2 动态负载均衡130

7.4.3 动态负载均衡算法的一般步骤131

7.5 本章小结133

第8章 并行算法缺陷134

8.1 启动结束时间134

8.2 负载均衡135

8.3 竞写136

8.4 锁136

8.4.1 死锁137

8.4.2 活锁139

8.5 饿死140

8.6 伪共享140

8.7 原子操作141

8.8 存储器栅栏142

8.9 缓存一致性142

8.10 顺序一致性143

8.11 volatile同步错误143

8.12 本章小结144

第9章 并行编程模式实践146

9.1 map模式147

9.2 reduce模式149

9.3 结合map和reduce模式152

9.4 scan模式155

9.5 zip/unzip模式156

9.6 流水线模式159

9.7 本章小结161

第10章 如何并行遗留代码162

10.1 找出软件的计算热点163

10.2 判断是否并行化热点164

10.3 设计算法并实现166

10.3.1 选择何种工具进行向量化或并行化166

10.3.2 重构热点代码167

10.3.3 依据硬件实现算法168

10.4 将实现后的代码嵌入原软件169

10.4.1 混合编译169

10.4.2 动态链接库170

10.5 示例:如何并行化word2vec171

10.6 本章小结174

第11章 超级并行176

11.1 超级并行方式编程176

11.1.1 进程+线程177

11.1.2 进程+GPU线程178

11.1.3 线程+GPU线程181

11.1.4 线程+向量指令181

11.1.5 进程+线程+向量指令182

11.1.6 进程+线程+GPU线程183

11.2 矩阵乘法184

11.2.1 多机CPU矩阵乘法184

11.2.2 单机多GPU矩阵乘法187

11.2.3 多机多GPU矩阵乘法188

11.3 本章小结189

第12章 并行算法设计的一般准则190

12.1 并行算法设计14准则190

12.2 本章小结194

附录A 整型数据与浮点数据195

热门推荐