多级中间表示概述MLIR

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

要引用MLIR,请使用this Arxiv publication 。

更多资源

有关MLIR的更多信息,请参见:

另请参阅 TensorFlow MLIR SIG ,该组织每周组织一次有关MLIR的公开“开放设计会议”。如果想讨论特定主题或有疑问,请将其添加到 议程文档中 。有关如何加入会议的详细信息,请参阅议程文档。

MLIR是做什么用的?

MLIR旨在成为一种混合IR,它可以在统一的基础架构中支持多种不同的需求。例如,这包括:

  • 表示数据流图的能力(例如在TensorFlow中),包括动态形状,用户可扩展的op生态系统,TensorFlow变量等。
  • 通常在此类图上进行优化和转换(例如在Grappler中)。
  • 以适合于优化的形式表示ML操作的内核。
  • 能够承载跨内核的高性能计算风格的循环优化(融合,循环交换,平铺等),并能够转换数据的内存布局。
  • 代码生成“降低”转换,例如DMA插入,显式缓存管理,内存平铺以及针对1D和2D寄存器体系结构的矢量化。
  • 表示特定于目标的操作的能力,例如特定于加速器的高级操作。
  • 在深度学习图上进行量化和其它图转换。

MLIR是一种常见的IR,也支持特定于硬件的操作。因此,对MLIR周围基础架构的任何投资(例如,编译器对其进行的工作都应通过)应产生良好的回报;许多目标可以使用该基础架构,并从中受益。

MLIR是强大的表示形式,但也有非目标。不尝试支持低级机器代码生成算法(例如寄存器分配和指令调度)。更适合较低级别的优化器(例如LLVM)。另外,不希望MLIR成为最终用户自己将内核编写为内核的源语言(类似于CUDA C ++)。另一方面,MLIR提供了代表任何此类DSL并将其集成到生态系统中。

编译器基础架构

在构建MLIR时,受益于从构建其它IR(LLVM IR,XLA HLO和Swift SIL)获得的经验。MLIR框架鼓励现有的最佳实践,例如编写和维护IR规范,构建IR验证程序,提供将MLIR文件转储和解析为文本,使用FileCheck 工具编写广泛的单元测试 以及将基础结构构建为一组的能力。可以以新方式组合的模块化库。

其它内容已经以微妙的方式整合到设计中。例如,LLVM具有非显而易见的设计错误,这些错误阻止多线程编译器同时处理LLVM模块中的多个功能。MLIR通过限制SSA范围以减少use-def链,并通过用explicit替换跨函数引用来解决这些问题 symbol reference 。

多级中间表示概述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. ACM JAVA大数

    有的水题自己模拟下大数就过了,有的各种坑,天知道曾经因为大数wa了多少次....自己最近学者用JAVA,下面是自己总结的JAVA常用知识.. 框架 import java.util.Scanner; ...

  2. 从苏宁电器到卡巴斯基第09篇:我在苏宁电器当营业员 I

    毕竟应聘的是营业员,门槛还是很低的 我应聘苏宁的时候已经到了2009年的8月初,记得当时苏宁电器的长春总部还在吉林大路与东盛大街交汇处的亚泰广场,我当时的面试就是在那里. 我记得很清楚,那天等待面试的 ...

  3. POJ2594 最小路径覆盖

    题意:       题意就是给你个有向无环图,问你最少放多少个机器人能把图全部遍历,机器人不能走回头路线. 思路:      如果直接建图,跑一遍二分匹配输出n - 最大匹配数会跪,原因是这个题目和以 ...

  4. PE文件格式偏移参考

    在进行PE文件格式病毒分析的时候,经常要使用到PE文件格式的解析,尤其是对LoadPE形式的病毒的分析,经常要查看PE文件格式的偏移,特地从博客<PE文件格式的偏移参考>中转载收录一份,之 ...

  5. hdu4966 最小树形图(最少辅导花费)

    题意:       以一些科目,和辅导班,每个科目最终要求修到某个等级,可以花一定的钱在辅导班把某一科目修到某一等级,进入辅导班的时候会有一个限制,那就是达到他给出的科目和等级限制,比如a b c d ...

  6. linux ptrace学习

    ptrace提供了一种使父进程得以监视和控制其它进程的方式,它还能够改变子进程中的寄存器和内核映像,因而可以实现断点调试和系统调用的跟踪.学习linux的ptrace是为学习android adbi框 ...

  7. NSIS制作安装包笔记(一):NSIS介绍、使用NSIS默认向导脚本制作Windows安装包

    前言   做产品时,定制的自定义安装界面常有的,使用NSIS + Qt可以完美的定制基于QT的安装界面,先从纯NSIS开始,制作常规的安装包.   应用程序的发布方式   应用程序发布的时候,具备以下 ...

  8. 线程本地存储(动态TLS和静态TLS)

    线程本地存储(TLS) 对于多线程应用程序,如果线程过于依赖全局变量和静态局部变量就会产生线程安全问题.也就是一个线程的使用全局变量可能会影响到其他也使用此全局变量的线程,有可能会造成一定的错误,这可 ...

  9. 有趣的css—简单的下雨效果2.0版

    简单的下雨效果2.0版 前言 笔者上一篇发布的文章有趣的css-简单的下雨效果中有位老哥给我提了一个很棒的建议,大致意思是波纹应该产生于雨滴的消失处. 这是按照老哥的建议完善后的效果图: 由于我制作G ...

  10. [基本运算符、流程控制之if判断、与用户交互、深浅拷贝]

    [基本运算符.流程控制之if判断.与用户交互] 基本运算符 1.算数运算符 python支持的算术运算符与数学上计算的符号使用是一致的 salary = 3.3 res = salary * 12 p ...