- ISBN:9787302616467
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:292
- 出版时间:2022-11-01
- 条形码:9787302616467 ; 978-7-302-61646-7
本书特色
本书利用多面体模型描述了如何实现不同阶段循环变换技术,是国内详细介绍该模型和循环优化技术的特殊编译参考书籍。
内容简介
本书分十大章节和三章附录章节,以现代体系结构特征为目标,从理论、方法及应用等不同角度,详细描述了各种提升程序并行性、数据局部性及适配目标架构特征的高级编译优化技术。本书还结合深度学习应用场景展开讨论,介绍了如何在深度学习框架中使用高级编译优化技术。
目录
第 1章体系结构发展对编译技术的影响 1
1
1面向经典体系结构的性能优化 1
1
11并行性发掘 1
1
12存储层次结构3
1
13领域专用架构4
1
2编译器面临的挑战7
1
21并行性发掘 8
1
22局部性发掘 10
1
23编程模型和抽象层次11
1
3循环优化的数学抽象 12
1
31多面体模型的基本概念 12
1
32多面体模型在编译器中的应用 15
1
33基于多面体模型的编译流程16
第 2章程序抽象表示基础 25
2
1抽象表示在编译器中发挥的作用25
2
2整数集合与仿射函数 28
2
21静态仿射约束28
222整数集合
29
223仿射函数
32
2
24集合与映射的运算 34
23
Fourier-Motzkin消去法38
24调度树
41
2
41调度的表示方式 41
2
42调度树的结点44
2
43调度树的操作47
2
44调度表示的比较 49
25抽象语法树
50
2
51被执行关系 50
2
52上下文信息 51
2
53结点和表达式52
2
6各种抽象的工程实现 53
261整数集合和仿射函数的实现54
262调度树的实现58
263抽象语法树的实现 59
第 3章依赖关系分析 61
31依赖关系分析在编译优化中的作用 61
32依赖及其性质 62
321依赖的分类 65
322距离向量与方向向量66
323循环无关依赖和循环携带依赖 67
324依赖与变换 68
325依赖的复杂性69
33依赖测试 72
331精确测试与保守测试73
332 ZIV测试 74
333 SIV测试 74
334 GCD测试 78
335 Banerjee测试 79
336 I测试80
34耦合下标依赖测试82
341扩展的 GCD测试 83
342 ζ测试 84
343 Delta测试 85
344 Omega测试86
35特殊的依赖测试 89
351 D测试 89
352 Range依赖测试 90
36数据流分析91
361精确数据流分析 93
362近似数据流分析 96
363带标记的数据流分析98
37依赖与并行化 99
第 4章循环变换103
41适配体系结构特征的关键技术 103
42预处理 104
421循环正规化 104
422死代码删除 105
423别名分析 106
424迭代空间分裂 106
43多面体模型中的循环变换 107
431循环变换分类 108
432循环变换的复杂性 109
433 Pluto调度算法 113
44仿射循环变换 124
441循环交换 124
442循环反转 126
443循环延展 127
444循环倾斜 128
445循环合并 130
446循环分布 131
45近似仿射循环变换 133
451循环分块 133
452循环分段 135
453循环展开压紧 137
46代码生成过程中的循环变换 139
461分块分离 139
462循环展开 140
463其他循环变换 141
47循环压紧 141
第 5章开发并行性 143
51利用多面体模型发掘数据并行 143
52复杂的分块形状 144
521交叉分块 144
522分裂分块 146
523钻石分块 149
524六角形分块 151
53 Feautrier调度算法 153
531一维时间表示的调度计算 153
532多维时间表示的调度计算 159
54开发向量化 164
541可向量化 Codelet 165
542利于向量化的调度算法 166
55面向分布式存储结构的并行 172
551构造通信数据集 173
552通信优化 176
第 6章挖掘局部性 179
61金字塔形存储层次结构之外的挑战 179
62面向不同优化目标的循环合并策略 180
621基于依赖图的循环合并算法 181
622拆分弱连通图 183
623合并强连通分量 184
63循环合并与循环分块的组合 185
631先合并后分块 186
632分块后再合并 189
633提升高速缓存的使用率 192
64数据空间变换 195
641间接数据空间变换 195
642显式数据空间变换 198
65提升局部性的调度优化 202
651循环分块后的重新调度 202
652面向数据访存连续性的调度优化 203
66数组压缩 213
661内存竞争关系 213
662划分数据空间 215
663代价模型 218
第 7章代码生成221
71一个比输出指令序列更复杂的任务 221
72代码生成方法 222
721凸包算法 222
722分割算法 224
73分割代码生成 227
731 for循环生成 228
732 if语句的生成位置 234
733循环展开 234
734分块分离 236
735循环退化 237
736带偏移的跨步循环 238
74 if控制流优化 239
75内存管理 240
751 CPU与 GPU间的传输 241
752内存提升 243
76同步指令 245
第 8章多面体编译理论的*新进展 247
81 MLIR 247
811 MLIR基本概念 249
812与多面体模型的集成 253
82 Halide 258
821 Halide设计理念 259
822 Halide调度树 260
83 Tiramisu 265
84 Tensor Comprehensions 270
85 AKG 275
86面向 Tensor Core的自动代码生成 280
参考文献 285
作者简介
赵捷,2009年于清华大学获得工学学士学位,2018年于法国巴黎高等师范学校获得工学博士学位,现就职于数学工程与先进计算国家重点实验室。赵捷博士长期从事编译器高级优化和代码生成方面的研究,目前主要从事深度学习编译器的研究。 李宝亮,2009年于清华大学获工学学士学位,2014年赴加拿大麦吉尔大学交流访问,2015年于国防科学技术大学获工学博士学位。李宝亮博士长期从事体系结构性能分析优化方面的研究,目前主要从事深度学习专用加速芯片的研制和相关系统软件和编程语言的开发。
-
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
硅谷之火-人与计算机的未来
¥14.3¥39.8 -
全图解零基础word excel ppt 应用教程
¥12.0¥48.0 -
机器学习
¥59.4¥108.0 -
深度学习的数学
¥43.5¥69.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥37.7¥65.0 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥77.4¥109.0 -
UG NX 12.0数控编程
¥24.8¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
界面交互设计理论研究
¥30.8¥56.0 -
UN NX 12.0多轴数控编程案例教程
¥25.8¥38.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
Go 语言运维开发 : Kubernetes 项目实战
¥48.2¥79.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥84.5¥119.0