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多级中间表示概述的更多相关文章

  1. 多级中间表示概述MLIR

    多级中间表示概述MLIR MLIR项目是一种构建可重用和可扩展的编译器基础结构的新颖方法.MLIR旨在解决软件碎片,改善异构硬件的编译,显着降低构建特定于域的编译器的成本以及帮助将现有编译器连接在一起 ...

  2. .Net 大型分布式基础服务架构横向演变概述

    一. 业务背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便于运维及监控. 二. 基础 ...

  3. MVC5+EF6 入门完整教程13 -- 动态生成多级菜单

    稍微有一定复杂性的系统,多级菜单都是一个必备组件. 本篇专题讲述如何生成动态多级菜单的通用做法. 我们不用任何第三方的组件,完全自己构建灵活通用的多级菜单. 需要达成的效果:容易复用,可以根据mode ...

  4. python django 多级业务树形结构规划及页面渲染

    概述: 在项目中,父级到子级结构并不少见,如果仅仅的两层树形结构,我们可以使用数据库的外键设计轻松做到,子级业务表设计一字段外键到父级业务表,这样子到父.父到子的查询都非常简单. 但是往往父子结构会有 ...

  5. UML精粹5 - 状态图,活动图,通信图,组合结构,组件图,协作,交互概述图,时间图

    状态机图state machine diagram 下面是状态图的一个例子(一个城堡中的秘密保险箱的控制面板). 转换transition包括3个部分:trigger-signature [guard ...

  6. [转载]WEB缓存技术概述

    [原文地址]http://www.hbjjrb.com/Jishu/ASP/201110/319372.html 引言 WWW是互联网上最受欢迎的应用之一,其快速增长造成网络拥塞和服务器超载,导致客户 ...

  7. Deep Learning论文笔记之(六)Multi-Stage多级架构分析

    Deep Learning论文笔记之(六)Multi-Stage多级架构分析 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些 ...

  8. JAVAEE——BOS物流项目10:权限概述、常见的权限控制方式、apache shiro框架简介、基于shiro框架进行认证操作

    1 学习计划 1.演示权限demo 2.权限概述 n 认证 n 授权 3.常见的权限控制方式 n url拦截权限控制 n 方法注解权限控制 4.创建权限数据模型 n 权限表 n 角色表 n 用户表 n ...

  9. 更快实现Android多级树形选择列表

    快速实现Android多级树形列表,这个库是在鸿洋多级树形列表demo中修改而来. 解决的问题: 1. 支持ID为int类型和String类型. 2. 支持多级复选框选中,使用只需一行代码. 3. 支 ...

随机推荐

  1. Oracle 数据库裸设备扩容处理

    前段时间,我管理的一台Oracle数据库表空间容量不足了,由于本人以前没有接触过Oracle的使用所以,就自己查资料来研究如何扩容,网上的文档多数都是在物理机上扩容,而偏偏我的数据文件是存储在裸设备上 ...

  2. POJ1466 最大点权独立集

    题意:       给你n个人,再给你每个人都喜欢哪些人,让你找到一个最大的集合数,要求这个集合里面任意两个人都不喜欢彼此. 思路:       直接就是在问最大点权独立集元素个数,没啥解释的一遍二分 ...

  3. Python脚本抓取京东手机的配置信息

    以下代码是使用python抓取京东小米8手机的配置信息 首先找到小米8商品的链接:https://item.jd.com/7437788.html 然后找到其配置信息的标签,我们找到其配置信息的标签为 ...

  4. <JVM上篇:内存与垃圾回收篇>04-虚拟机栈

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  5. java.lang.ClassNotFoundException的解决方案

    举一个特定的例子 java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource 到Maven中央仓库下载 当我们看 ...

  6. 使用TK框架中selectByPrimaryKey

    使用TK框架中selectByPrimaryKey(Object key),需要注意要在entity里注明哪个字段是主键,否则会不知道哪个是PrimaryKey会随机一个字段就报错. 如下: 引入 i ...

  7. (10)MySQL进阶篇SQL优化(InnoDB锁-间隙锁)

    1.概述 当我们用范围条件而不是相等条件检索数据,并请求共享或排他锁时,InnoDB会给符合条件的已有数据记录的索引项加锁:对于键值在条件范围内但并不存在的记录,叫做"间隙(GAP)&quo ...

  8. 【BUAA软工】技术规格说明书

    项目 内容 班级:北航2020春软件工程 博客园班级博客 作业:技术规格说明书 技术规格说明书 宏观技术 后端 WEB服务器 WEB服务器选取的是Springboot,作为当下Java语言最主流的WE ...

  9. Java Arrays.sort()重写comparator方法

    先看一下接口 Arrays.sort(T[],Comparator<? super T> c); comparator要重写compare方法 compare方法大概长这样,返回值> ...

  10. 使用 Yarn workspace,TypeScript,esbuild,React 和 Express 构建 K8S 云原生应用(一)

    本文将指导您使用 K8S ,Docker,Yarn workspace ,TypeScript,esbuild,Express 和 React 来设置构建一个基本的云原生 Web 应用程序. 在本教程 ...