编译器介绍

25 年 11 月 30 日 星期日
317 字
2 分钟

编译器核心架构为传统三段式模型

  • FrontEnd:负责源码解析->语法树生成;涉及到词法分析(Lex),语法分析,语义分析
  • Optimizer:负责中间代码优化;涉及到常量传播,死代码消除,循环优化等
  • BackEnd:负责目标机器码生成;涉及到指令选择,寄存器分配,指令调度

在编译过程中,前端主要负责词法和语法分析,将源代码转化为抽象语法树;优化器则是在前端的基础上,对中间代码进行优化,使代码更加高效;后端则是将已经优化的中间代码转化为针对各自平台的机器代码。

在这之中,中间代码被称为IR(Intermediate Representation)

主流编译器技术

GCC(GNU Compiler Collection)

前后端耦合度高,支持多语言

...

LLVM(Low Level Virtual Machine)

模块化SDK架构,将编译器拆分成可重用库(like libLLVMCore),定义通用中间表示LLVM IR

典型的工具链有,opt:IR优化器;llc:IR->汇编代码生成器;llvm-mc:汇编器/反汇编器

...

Clang(LLVM前端)

...

TorchInductor

在pytorch2.0之后,引入了torchinductor,从“即时执行”向“编译模式”变化,TorchInductor把pytorch模型变成triton代码(gpu上)

。。。

文章标题:编译器介绍

文章作者:io-wy

文章链接:https://io-wy.github.io/posts/%E7%BC%96%E8%AF%91%E5%99%A8%E4%BB%8B%E7%BB%8D[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。