MLIR多级中间表示概述
MLIR多级中间表示概述
MLIR项目是构建可重用和可扩展的编译器基础设施的一种新方法。MLIR旨在解决软件碎片化问题,改进异构硬件的编译,显著降低构建特定领域编译器的成本,并帮助将现有编译器连接在一起。
More resources
有关MLIR的更多信息,请参见:
l LLVM论坛的MLIR部分有任何问题。
l LLVM不一致服务器MLIR通道的实时讨论。
l 之前的会谈。
另请参阅TensorFlow MLIR SIG,它每周组织一次关于MLIR的公众“公开设计会议”。
What is MLIR for?
MLIR旨在成为一个混合IR,它可以在一个统一的基础设施中支持多种不同的需求。例如,这包括:
l 表示数据流图的能力(例如在TensorFlow中),包括动态形状、用户可扩展的算子生态系统、TensorFlow变量等。
l 通常在这种图上进行的优化和转换(例如在Grappler中)。
l 以适合优化的形式表示ML算子的内核。
l 能够跨内核托管high-performance-computing-style高性能计算风格的循环优化(融合、循环交换、并行tiling等),并转换数据的内存布局。
l 代码生成“降低”转换,如DMA插入、显式缓存管理、内存平铺和一维和二维寄存器架构的矢量化。
l 能够代表target-specific目标的算子,例如accelerator-specific high-level加速器特定的高级算子。
l 在深度学习图上进行的量化和其他图形转换。
MLIR是一种通用的IR,它还支持特定于硬件的操作。因此,对围绕MLIR的基础结构的任何投资(例如,在其上工作的编译器通行证)都应该产生良好的回报;许多目标可以使用该基础结构并从中受益。
MLIR是一个强大的代表,但它也有非目标。不支持低级机器代码生成算法(如寄存器分配和指令调度)。它们更适合于较低级别的优化器(如LLVM)。而且,不希望MIIR是最终用户自己编写内核(类似于CUDA C++)的源语言。另一方面,MLIR为表示任何此类DSL并将其集成到生态系统中提供了主干。
编译器基础结构
在建立MLIR时,受益于从构建其他IRs(LLVM IR、XLA HLO和Swift SIL)中获得的经验。MLIR框架鼓励现有的最佳实践,例如编写和维护IR规范,构建IR验证器,提供将MLIR文件转储并解析为文本的能力,使用FileCheck工具编写大量的单元测试,以及将基础结构构建为一组可以以新方式组合的模块化库。
其它的优点也被巧妙地融入到设计中。例如,LLVM存在一些不明显的设计错误,这些错误会阻止多线程编译器同时处理LLVM模块中的多个函数。MLIR通过限制SSA作用域来减少使用def链,并用显式符号引用替换跨函数引用来解决这些问题。
MLIR多级中间表示概述的更多相关文章
- 多级中间表示概述MLIR
多级中间表示概述MLIR MLIR项目是一种构建可重用和可扩展的编译器基础结构的新颖方法.MLIR旨在解决软件碎片,改善异构硬件的编译,显着降低构建特定于域的编译器的成本以及帮助将现有编译器连接在一起 ...
- .Net 大型分布式基础服务架构横向演变概述
一. 业务背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便于运维及监控. 二. 基础 ...
- MVC5+EF6 入门完整教程13 -- 动态生成多级菜单
稍微有一定复杂性的系统,多级菜单都是一个必备组件. 本篇专题讲述如何生成动态多级菜单的通用做法. 我们不用任何第三方的组件,完全自己构建灵活通用的多级菜单. 需要达成的效果:容易复用,可以根据mode ...
- python django 多级业务树形结构规划及页面渲染
概述: 在项目中,父级到子级结构并不少见,如果仅仅的两层树形结构,我们可以使用数据库的外键设计轻松做到,子级业务表设计一字段外键到父级业务表,这样子到父.父到子的查询都非常简单. 但是往往父子结构会有 ...
- UML精粹5 - 状态图,活动图,通信图,组合结构,组件图,协作,交互概述图,时间图
状态机图state machine diagram 下面是状态图的一个例子(一个城堡中的秘密保险箱的控制面板). 转换transition包括3个部分:trigger-signature [guard ...
- [转载]WEB缓存技术概述
[原文地址]http://www.hbjjrb.com/Jishu/ASP/201110/319372.html 引言 WWW是互联网上最受欢迎的应用之一,其快速增长造成网络拥塞和服务器超载,导致客户 ...
- Deep Learning论文笔记之(六)Multi-Stage多级架构分析
Deep Learning论文笔记之(六)Multi-Stage多级架构分析 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些 ...
- JAVAEE——BOS物流项目10:权限概述、常见的权限控制方式、apache shiro框架简介、基于shiro框架进行认证操作
1 学习计划 1.演示权限demo 2.权限概述 n 认证 n 授权 3.常见的权限控制方式 n url拦截权限控制 n 方法注解权限控制 4.创建权限数据模型 n 权限表 n 角色表 n 用户表 n ...
- 更快实现Android多级树形选择列表
快速实现Android多级树形列表,这个库是在鸿洋多级树形列表demo中修改而来. 解决的问题: 1. 支持ID为int类型和String类型. 2. 支持多级复选框选中,使用只需一行代码. 3. 支 ...
随机推荐
- Android apk快速定位、灰色按钮克星--DroidSword
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80994434 在进行Android应用程序的逆向分析时,经常需要对Android ...
- Python脚本扫描给定网段的MAC地址表(scapy或 python-nmap)
目录 用scapy模块写 用 python-nmap 模块写 python3.7 windows环境 以下两个都可以扫描指定主机或者指定网段的 IP 对应的 MAC 地址,然后保存到 csv 文件中 ...
- Tars-Java客户端源码分析
一.基本RPC框架简介 在分布式计算中,远程过程调用(Remote Procedure Call,缩写 RPC)允许运行于一台计算机的程序调用另一个地址空间计算机的程序,就像调用本地程序一样,无需额外 ...
- android手势识别
一.简单手势识别: 简单手势识别分为以下几个步骤: 1.手指触碰屏幕时,触发MotionEvent事件: 2.该事件被OnTouchListener监听,可在它的onTouch()方法中获得该Moti ...
- WireShark之抓telnet密码
背景环境: 涉及到telnet和ssh知识的时候,必须要提的是telnet传输是明文的不安全的,传输的密码都会泄露,有兴趣来做个试验. 一:工具 ·①Windows 7 PC机:②GNS3:③Wire ...
- 一文弄懂pytorch搭建网络流程+多分类评价指标
讲在前面,本来想通过一个简单的多层感知机实验一下不同的优化方法的,结果写着写着就先研究起评价指标来了,之前也写过一篇:https://www.cnblogs.com/xiximayou/p/13700 ...
- MindSpore保存与加载模型
技术背景 近几年在机器学习和传统搜索算法的结合中,逐渐发展出了一种Search To Optimization的思维,旨在通过构造一个特定的机器学习模型,来替代传统算法中的搜索过程,进而加速经典图论等 ...
- iNeuOS工业互联平台,WEB组态(iNeuView)增加动态图元,例如液位
目 录 1. 概述... 2 2. 平台演示... 2 3. 应用过程... 2 4. 实现动态图元的效果... 3 1. 概述 最近,有潜在用 ...
- python爬虫——《瓜子网》的广州二手车市场信息
由于多线程爬取数据比单线程的效率要高,尤其对于爬取数据量大的情况,效果更好,所以这次采用多线程进行爬取.具体代码和流程如下: import math import re from concurrent ...
- 老vue项目webpack3升级到webpack5全过程记录(一)
背景 19年新建的vue项目,使用的是webpack3,随着项目的积累,组件的增多导致本地构建,线上打包等操作速度极慢,非常影响开发效率和部署效率,基于此问题,本次对webpack及相关插件进行了优化 ...