【深度学习编译器系列】2. 深度学习编译器的通用设计架构
在【深度学习编译器系列】1. 为什么需要深度学习编译器?中我们了解到了为什么需要深度学习编译器,和什么是深度学习编译器,接下来我们把深度学习编译器这个小黑盒打开,看看里面有什么东西。
1. 深度学习编译器的通用设计架构
与传统编译器类似,深度学习编译器也采用分层设计。深度学习编译器主要包括编译器前端和编译器后端两部分。
编译器前端主要执行硬件无关的转换和优化,如算子融合,布局转换,代数化简等。
编译器后端主要执行硬件相关的优化,如内核库调用,自动调优,内存分配等。

另外,深度学习编译器还有一个必不可少的部分,在上图中没有显式表示出来的,就是中间表示 (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)呢?让我们拭目以待一下。
参考文献:
- The Deep Learning Compiler: A Comprehensive Survey
- The Deep Learning Compiler: A Comprehensive Survey 中文翻译
相关文章:
【深度学习编译器系列】2. 深度学习编译器的通用设计架构
在【深度学习编译器系列】1. 为什么需要深度学习编译器?中我们了解到了为什么需要深度学习编译器,和什么是深度学习编译器,接下来我们把深度学习编译器这个小黑盒打开,看看里面有什么东西。 1. 深度学习编译器的通用设计架构 与…...
图解操作系统
硬件结构 CPU是如何执行程序的? 图灵机的工作方式 图灵机的基本思想:用机器来模拟人们用纸笔进行数学运算的过程,还定义了由计算机的那些部分组成,程序又是如何执行的。 图灵机的基本组成如下: 有一条「纸带」&am…...
【发版或上线项目保姆级心得】
第一步:先在正式环境创建数据库/新增表格或者字段 在数据库表中增加字段/表格,不会报错。 但是切记不要过早数据库字段/表格或者删除字段/表格 第二步:修改配置文件 先将正式环境需要的配置给写好,包括但不仅限于数据库配置、…...
Python数据分析-pandas库入门
pandas 库概述pandas 提供了快速便捷处理结构化数据的大量数据结构和函数。自从2010年出现以来,它助使 Python 成为强大而高效的数据分析环境。pandas使用最多的数据结构对象是 DataFrame,它是一个面向列(column-oriented)的二维表…...
MacBook Pro 恢复出厂设置
目录1.恢复出厂设置1.1 按Command-R 键1.2 macOS 实用工具1.3 从 macOS 恢复功能的实用工具窗口中选择“磁盘工具”,然后点按“继续”1.4 在“磁盘工具”边栏中选择您的设备或宗卷。1.5 点按“抹掉”按钮或标签页1.6 抹掉OS X HD - 数据 完成1.7 抹掉 OS X HD1.8 查…...
googletest 笔记
什么是一个好的测试 1 测试应该是独立的和可重复的。调试一个由于其他测试而成功或 失败的测试是一件痛苦的事情。googletest 通过在不同的对象上 运行测试来隔离测试。当测试失败时,googletest 允许您单独运 行它以快速调试。 2 测试应该很好地“组织”,…...
MySQL修改密码的几种方式?
第一种方式: 最简单的方法就是借助第三方工具Navicat for MySQL来修改。方法如下: 1、登录mysql到指定库,如:登录到test库。 2、然后点击上方"用户"按钮。 3、选择要更改的用户名,然后点击上方的"编辑用…...
关于画一个句号--基于2022年终总结的反思与分享
没有平台鼓风造势,今年各大平台没有涌现出一批总结,非常清爽 正如同人发明了抽屉,将杂物进行整理、丢弃、收纳,才能对空间进行更合理地使用。我们也需要对知识、过往经历进行整理、丢弃、收纳,才能对大脑进行更合理地…...
学习Flask之三、模板
学习Flask之三、模板 书写易于维护的应用的关键是书写整洁和良构的代码。到目前为止你所见的例子过于简单而不能体现这点。把两个目的完全独立的Flask view 函数当作一个来写,会产生问题。view函数的一个显然的任务是对请求作出响应,如前面的例子所示。对…...
2023-02-20干活小计:
所以我今天的活开始了: In this paper, the authors target the problem of Multimodal Name Entity Recognition(MNER) as an improvement on NER(text only) The paper proposes a multimodal fusion based on a heterogeneous graph of texts and images to mak…...
LeetCode_动态规划_困难_1326.灌溉花园的最少水龙头数目
目录1.题目2.思路3.代码实现(Java)1.题目 在 x 轴上有一个一维的花园。花园长度为 n,从点 0 开始,到点 n 结束。 花园里总共有 n 1 个水龙头,分别位于 [0, 1, …, n] 。 给你一个整数 n 和一个长度为 n 1 的整数数…...
mac tcpdump学习
学习原因 工作上遇到了重启wifi后无法发出mDNS packet的情况,琢磨一下用tcpdump用的命令如下 sudo tcpdump -n -k -s 0 -i en0 -w VENDOR-DUT-INTERFACE.pcapng是在测airplay BCT认证时,官方文档的解决方法。对tcpdump很不了解,现汇总如下的学…...
【跟我一起读《视觉惯性SLAM理论与源码解析》】第二章 编程及编译工具
23.2.21终于拿到六哥的新书 感觉很是不错,打算近期写一写心得之类的 废话不多说,直接开啃 PS:我的建议是阅读完十四讲后再来看这本书,效果应该会很不错。 因为第一章都是介绍之类的我觉得没什么整理的必要,所以直接来…...
广东望京卡牌科技有限公司,2023年团建活动圆满举行
玉兔初临,春天相随,抖擞精神,好运连连。春天是一个万物复苏的季节,来自广东的望京卡牌科技有限公司,也迎来了新年第一次团建活动。在“乘风破浪、追逐梦想”的口号声中,2023望京卡牌目标启动会团结活动正式…...
ts语法如何在Vue3中运用?
一、父子传值的用法 父传子:defineProps的TS写法 // 父组件:和 vue2 一样正常传值 <template><div class"login-page"><cp-nav-bar title"登录" right-text"注册"></cp-nav-bar></div> &…...
RK3566添加湿度传感器以及浅析hal层
RK3566添加一款温湿度传感器gxht3x.挂在i2c总线下。驱动部分就不多做解析。大致流程硬件接好i2c线以及vcc gnd。后看数据手册。初始化寄存器,然后要读数据的话读那个寄存器,读出来的数据要做一个转化,然后实现open read write ioctl函数就行了。本文主要…...
看了这份Java高级笔试宝典覆盖近3年Java笔试中98%高频知识点,反打面试官
首先声明: 本书覆盖了近3年程序员面试笔试中超过98%Java高频知识点,当你细细品读完本书后,面试都是小问题。 一书在手/工作不愁 记住重点,考试要考 前言 程序员求职始终是当前社会的一个热点,而市面上有很多关于程…...
从0到1搭建大数据平台之监控
大家好,我是脚丫先生 (o^^o) 大数据平台设计中,监控系统尤为重要。 它时刻关乎大数据开发人员的幸福感。 试想如果半夜三更,被电话吵醒解决集群故障问题,那是多么的痛苦!!! 但是不加班是不可…...
采购评标管理过程是怎样的?有哪些评标标准?
采购活动的评标是检查和比较投标的有组织的过程,以选择最佳报价,努力获得实现企业目标所需的货物、工程和服务。 评标是由一个被称为评标小组的机构负责。这个小组如何称呼,取决于企业的情况。同义词有报价审查小组、投标审查委员会或投标审…...
《Vue+Spring Boot前后端分离开发实战》专著累计发行上万册
杰哥的学术专著《VueSpring Boot前后端分离开发实战》由清华大学出版社于2021年3月首次出版发行,虽受疫情影响但热度不减,受到业界读者的热捧,截至今日加印5次,累计发行12000册,引领读者开发前后端分离项目,…...
别再乱装CUDA了!保姆级教程:从显卡驱动到PyTorch 2.x,一次搞定Windows深度学习环境
深度学习环境配置避坑指南:从显卡驱动到PyTorch 2.x全流程解析 刚接触深度学习的开发者,往往在环境配置阶段就遭遇重重阻碍。显卡驱动与CUDA版本不匹配、cuDNN安装失败、PyTorch下载缓慢等问题,让许多初学者在起步阶段就耗费大量时间。本文将…...
宝可梦随机化终极指南:Universal Pokemon Randomizer ZX 完全使用教程
宝可梦随机化终极指南:Universal Pokemon Randomizer ZX 完全使用教程 【免费下载链接】universal-pokemon-randomizer-zx Public repository of source code for the Universal Pokemon Randomizer ZX 项目地址: https://gitcode.com/gh_mirrors/un/universal-po…...
ChatGLM3-6B企业实操:离线环境下的技术问答机器人部署
ChatGLM3-6B企业实操:离线环境下的技术问答机器人部署 1. 项目概述 在当今企业环境中,数据安全和响应速度是技术问答系统的核心需求。传统的云端AI服务虽然方便,但存在数据泄露风险、网络依赖性强、响应延迟高等问题。特别是对于金融、医疗…...
Adobe软件非正版弹窗终极解决方案:PS/Ai/PR/AE禁用提示一键清除指南
1. Adobe弹窗问题的根源分析 最近不少朋友打开Photoshop、Illustrator这些Adobe软件时,突然跳出一个烦人的提示框:"Your non-genuine Adobe app will be disabled soon"。这个警告不仅影响使用体验,严重时还会导致软件直接罢工。作…...
Flutter文件操作实战:File_selector跨平台文件处理从入门到精通
1. 为什么Flutter开发者都需要掌握File_selector? 在移动应用和桌面应用开发中,文件操作就像我们日常生活中的"文件柜"——你需要存放、查找、整理各种文档。而Flutter作为跨平台框架,最大的挑战就是如何在不同操作系统上实现统一的…...
从播放卡顿到流媒体优化:深入MP4的stbl盒子,理解视频流畅播放的关键
从播放卡顿到流媒体优化:深入MP4的stbl盒子,理解视频流畅播放的关键 当你在深夜调试一个在线视频播放器,发现用户总是抱怨卡顿和拖拽不准时,是否曾思考过问题可能隐藏在MP4文件最核心的stbl盒子中?作为流媒体开发者&am…...
Simulink新手必看:从零搭建四轴飞行器仿真模型(附完整代码)
Simulink实战:四轴飞行器仿真建模全流程解析 四轴飞行器作为无人机领域的经典构型,其控制系统的设计与验证一直是工程师和科研人员的重点课题。对于刚接触Simulink的开发者而言,如何将复杂的飞行动力学转化为可视化的仿真模型往往令人望而生畏…...
基于Pixel Epic · Wisdom Terminal的MySQL智能运维:安装配置与性能调优
基于Pixel Epic Wisdom Terminal的MySQL智能运维:安装配置与性能调优 1. 引言 MySQL作为最流行的开源关系型数据库,在各类业务系统中扮演着核心角色。但传统的数据库运维往往面临几个痛点:配置参数复杂难懂、SQL优化依赖经验、性能问题排查…...
HG-ha/MTools快速入门:3步部署,体验一体化桌面工具的魅力
HG-ha/MTools快速入门:3步部署,体验一体化桌面工具的魅力 1. 为什么选择MTools?——重新定义桌面生产力 现代开发者和创意工作者常常面临一个困境:需要在十几个专业软件之间来回切换,每个工具都有不同的操作逻辑和系…...
无需本地安装,用快马平台5分钟搭建git操作可视化原型
最近在准备一个Git入门教学项目时,发现很多新手卡在环境配置这一步。传统方式需要先安装Git客户端、配置SSH密钥、设置全局参数,光是这些前置操作就能劝退不少人。于是尝试用InsCode(快马)平台的云端开发环境,意外发现能跳过所有安装步骤直接…...
