Files
openmlsys-zh/chapter_frontend_and_ir/index.md
2022-03-03 08:54:20 +00:00

32 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 编译器前端
在上一章节中我们详细讨论了计算图的生成和调度在进阶部分的介绍中简单介绍了深度学习编译器的作用。定义深度学习模型、计算图使用系统为用户提供的高级编程API我们将用户使用高级编程API编写的程序称为源程序将与硬件相关的程序称为目标程序深度学习编译器需要理解输入的源程序并将其映射到目标机。为了实现这两项任务编译器的设计被分解为两个主要部分前端和后端。传统编译器的前端专注于理解源程序后端则专注于将功能映射到目标机。为了将前后端相连接我们需要一种结构来表示转换后的源代码这就是中间表示Intermediate
Representation, IR
图 :numref:`compiler_frontend_structure`展示了机器学习编译器的前端的流程。其中,对源程序的解析过程与传统编译器是大致相同的,本章节不对这部分进行更细致的讨论。机器学习框架的编译器前端的独特之处主要在于自动微分功能的支持。为了满足自动微分功能带来的新需求,机器学习框架需要在传统中间表示的基础上设计新的中间表示结构。因此,本章节的介绍重点会放在中间表示以及自动微分这两个部分。最后,我们会简要探讨类型系统,静态分析和前端优化等编译器基础概念。
![编译器前端基础结构](../img/ch04/编译器前端基础架构.svg)
:width:`1000px`
:label:`compiler_frontend_structure`
本章的学习目标包括:
- 理解中间表示的基础概念,特点和实现方法
- 理解自动微分的基础概念,特点和实现方法
- 了解类型系统和静态推导的基本原理
- 了解编译器优化的主要手段和常见优化方法
```toc
:maxdepth: 2
overview_of_frontend
intermediate_representation
ad
type_system_and_static_analysis
common_frontend_optimization_pass
summary
```