第1章 深度学习简介
1.1 深度学习的起源、发展与爆发
1.1.1 深度学习的起源
1.1.2 深度学习的发展
1.1.3 深度学习的爆发
1.2 深度学习模型的基础概念
1.2.1 深度学习模型的组成
1.2.2 深度学习模型的运行
1.2.3 深度学习模型的分类
1.3 深度学习应用的开发流程
1.3.1 通用开发流程
1.3.2 特定领域典型应用的开发流程
1.4 深度学习框架
1.4.1 发展历程
1.4.2 典型框架
1.4.3 核心组件
第2章 深度学习编译简介
2.1 深度学习运算特征
2.1.1 深度学习中的矩阵运算
2.1.2 大规模矩阵运算面临的挑战
2.2 深度学习硬件平台
2.2.1 深度学习硬件技术架构
2.2.2 深度学习硬件应用挑战
2.3 深度学习编译技术
2.3.1 典型深度学习编译器
2.3.2 深度学习编译器的结构
第3章 编程模型与编程接口
3.1 编程模型
3.1.1 任务划分
3.1.2 数据分布
3.1.3 通信和同步
3.1.4 任务映射
3.1.5 兼容性及发展趋势
3.2 编程接口
3.2.1 基于C/C++的接口
3.2.2 基于Python的接口
3.2.3 Python调用C/C++的绑定技术
第4章 前端
4.1 计算图构成
4.1.1 数据节点
4.1.2 计算节点
4.1.3 控制节点
4.1.4 依赖边
4.2 计算图分类
4.2.1 静态计算图
4.2.2 动态计算图
4.3 计算图转换
4.3.1 动静结合技术
4.3.2 动静统一技术
4.4 计算图分析
4.4.1 类型系统
4.4.2 类型推导
4.4.3 类型转换
4.4.4 形状推导
第5章 中间表示
5.1 中间表示的概念
5.2 中间表示的分类
5.2.1 线性中间表示
5.2.2 图中间表示
5.2.3 混合中间表示
5.3 中间表示的设计
5.3.1 单层中间表示设计
5.3.2 两层中间表示设计
5.3.3 多层中间表示设计
第6章 自动微分
6.1 自动微分的概念
6.2 自动微分的模式
6.2.1 前向模式
6.2.2 反向模式
6.3 自动微分的实现
6.3.1 基本表达式法
6.3.2 操作符重载法
6.3.3 源码转换法
第7章 计算图优化
7.1 算子融合
7.1.1 融合规则
7.1.2 融合策略
7.1.3 内存融合
7.1.4 并行融合
7.1.5 动态融合
7.2 混合精度改写
7.3 数据布局转换
7.4 其他图优化方法
7.4.1 常量折叠
7.4.2 公共子表达式消除
7.4.3 代数化简
第8章 内存分配与优化
8.1 内存分配
8.2 内存复用
8.2.1 原地置换
8.2.2 内存共享
8.3 张量迁移
8.3.1 迁移机制
8.3.2 迁移优化
8.4 重计算
8.4.1 静态图重计算
8.4.2 动态图重计算
8.4.3 快速注意力机制
第9章 算子选择与生成
9.1 算子选择
9.2 算子生成
9.2.1 基于机器学习的算子生成
9.2.2 基于多面体变换的算子生成
第10章 代码生成与优化
10.1 过程间优化
10.2 循环优化
10.2.1 循环展开
10.2.2 循环合并
10.2.3 循环分布
10.2.4 循环剥离
10.2.5 循环分段
10.2.6 循环分块
10.2.7 循环交换
10.3 语句级优化
10.3.1 冗余语句删除
10.3.2 公共子表达式消除
10.4 指令级优化
10.4.1 指令流水
10.4.2 超标量
10.4.3 超长指令字
10.5 自动并行化
10.5.1 自动向量化
10.5.2 自动张量化
10.5.3 自动OpenMP并行化
10.6 访存优化
10.6.1 寄存器优化
10.6.2 内存优化
第11章 自动并行
11.1 并行划分
11.1.1 数据并行划分
11.1.2 模型并行划分
11.1.3 序列并行划分
11.1.4 混合并行划分
11.2 并行策略
11.2.1 搜索空间
11.2.2 代价模型
11.2.3 搜索算法
11.3 通信优化
11.3.1 通信优化基础
11.3.2 通信优化策略
第12章 模型推理
12.1 模型部署
12.1.1 部署工具
12.1.2 部署方式
12.2 模型压缩
12.2.1 量化
12.2.2 剪枝
12.2.3 知识蒸馏
12.3 推理加速
12.3.1 图优化
12.3.2 算法优化
12.3.3 运行时优化
参考文献