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. 支 ...
随机推荐
- Spring初识及其IOC入门
一.框架 框架是一些类和接口的集合,它一个半成品,已经对基础的代码进行了封装并提供相应的API,开发者在使用框架时直接调用封装好的api可以省去很多代码编写,从而提高工作效率和开发速度. 二.Spri ...
- 缓冲区溢出分析第07课:MS06-040漏洞研究——静态分析
前言 我在之前的课程中讨论过W32Dasm这款软件中的漏洞分析与利用的方法,由于使用该软件的人群毕竟是小众群体,因此该漏洞的危害相对来说还是比较小的.但是如果漏洞出现在Windows系统中,那么情况就 ...
- ResNet学习笔记
ResNet学习笔记 前言 这篇文章实在看完很多博客之后写的,需要读者至少拥有一定的CNN知识,当然我也不知道需要读者有什么水平,所以可能对一些很入门的基本的术语进行部分的解释,也有可能很多复杂的术语 ...
- Lombok Requires Annotation Processing Annotation processing seems to be disabled for the project "HelloWorld". For plugin to function correctly, please enable it under "Settings > Build > Compiler >
更多精彩详见微信公众号 在网上查找说是插件的问题,但是我安装类插件父级项目没有开启注解处理Annotation Processor,子项目都有开启,如图,顶级项目是demo,下面的都是子项目,把第一 ...
- layui中的分页laypage
1.html部分 <div id="test1"></div> 2.js部分: <script src="/static/build/lay ...
- cetnos中nmap端口扫描工具的使用
1:安装: yum -y install nmap 2:使用方法: nmap -p 1-65535 1.1.1.1 #扫描1.1.1.1此IP地址的所有端口 nmap -p 80,443 1.1.1. ...
- 多线程-2.线程创建方式和Thread类
线程的创建方式 1.继承Thread类,重写run方法,示例如下: 1 class PrimeThread extends Thread { 2 long minPrime; 3 PrimeThrea ...
- opencv——几何变换原理与实现
摘要 图像几何变换又称为图像空间变换, 它将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置.几何变换不改变图像的像素值, 只是在图像平面上进行像素的重新安排. 几何变换大致分为仿射变换.投影变换. ...
- Django(10)ORM模型介绍
前言 随着项目越来越大,采用写原生SQL的方式在代码中会出现大量的SQL语句,那么问题就出现了: 1.SQL语句重复利用率不高,越复杂的SQL语句条件越多,代码越长.会出现很多相近的SQL语句. 2. ...
- MFC的六大机制
MFC的六大机制 程序的初始化过程 运行时类型识别 动态创建 永久保存 消息映射 命令传递 运行时类型识别 MFC的运行时类型识别就是在程序运行过程中判断某个对象是否属于某个类,MFC通过为需要进行运 ...