当前位置: 首页 > news >正文

【深度学习编译器系列】2. 深度学习编译器的通用设计架构

在【深度学习编译器系列】1. 为什么需要深度学习编译器?中我们了解到了为什么需要深度学习编译器,和什么是深度学习编译器,接下来我们把深度学习编译器这个小黑盒打开,看看里面有什么东西。

1. 深度学习编译器的通用设计架构

与传统编译器类似,深度学习编译器也采用分层设计。深度学习编译器主要包括编译器前端和编译器后端两部分。

编译器前端主要执行硬件无关的转换和优化,如算子融合,布局转换,代数化简等。
编译器后端主要执行硬件相关的优化,如内核库调用,自动调优,内存分配等。
DLC Architecture
另外,深度学习编译器还有一个必不可少的部分,在上图中没有显式表示出来的,就是中间表示 (intermediate representation, IR)。
IR贯穿深度学习编译器的整个架构,首先深度学习模型通过high level IR(也称为计算图IR)翻译到编译器的前端,编译器前端基于高阶IR进行一系列优化。然后high level IR再映射到编译器后端的low level IR (operator IR),编译器后端基于low level IR进行一系列优化、代码生成和编译。

2. 深度学习编译器的入局者

在深度学习编译器的整个软件栈上,目前有非常多的玩家在持续投入。从应用层面来看有很多成熟的深度学习框架,如Tensorflow, Pytorch等。从硬件层面来看也不断有各种深度学习专用芯片的产生,如Google的TPU,Nvidia的Turing,Intel NNP,Amazon的Inferentia,阿里平头哥的含光,华为海思的NPU等。从深度学习编译器本身,工业界和学术界也推出了不同的深度学习编译器,比如TVM,TensorFlow XLA,Pytorch NvFuser,Intel nGraph,Google MLIR等。不同的玩家侧重点也不同,有的侧重于前端优化,有的侧重于后端优化。

总的来说,深度学习编译器这个领域看起来正处于百家争鸣的时候,这让人不禁想起了上世纪90年代,传统编译器遍地开花的场景。那么未来,深度学习编译器是否会像传统编译器一样收敛到一个比较统一的范式(GCC/LLVM)呢?让我们拭目以待一下。






参考文献:

  1. The Deep Learning Compiler: A Comprehensive Survey
  2. The Deep Learning Compiler: A Comprehensive Survey 中文翻译
http://www.lryc.cn/news/15522.html

相关文章:

  • 图解操作系统
  • 【发版或上线项目保姆级心得】
  • Python数据分析-pandas库入门
  • MacBook Pro 恢复出厂设置
  • googletest 笔记
  • MySQL修改密码的几种方式?
  • 关于画一个句号--基于2022年终总结的反思与分享
  • 学习Flask之三、模板
  • 2023-02-20干活小计:
  • LeetCode_动态规划_困难_1326.灌溉花园的最少水龙头数目
  • mac tcpdump学习
  • 【跟我一起读《视觉惯性SLAM理论与源码解析》】第二章 编程及编译工具
  • 广东望京卡牌科技有限公司,2023年团建活动圆满举行
  • ts语法如何在Vue3中运用?
  • RK3566添加湿度传感器以及浅析hal层
  • 看了这份Java高级笔试宝典覆盖近3年Java笔试中98%高频知识点,反打面试官
  • 从0到1搭建大数据平台之监控
  • 采购评标管理过程是怎样的?有哪些评标标准?
  • 《Vue+Spring Boot前后端分离开发实战》专著累计发行上万册
  • 类与类之间的关系有哪几种?
  • LeetCode 606.根据二叉树创建字符串,102.二叉树的层序遍历和牛客 二叉搜索树与双向链表
  • 02-18 周六 图解机器学习之SMV 第五章5-2
  • Spring Boot系列--创建第一个Spring Boot项目
  • 手把手教你用React Hook和TypeScript从零实现虚拟滚动列表组件
  • 界面控件DevExpress WPF Pivot Grid——拥有强大多维数据分析能力!
  • python字典及基础操作
  • Windows Server 2008 R2安装onlyoffice【docker】
  • JVM学习笔记六:运行时数据区之堆
  • usb闪存驱动器数据恢复该怎么进行?3个方法总结
  • DAX 微信 markdown 编辑器