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. 支 ...
随机推荐
- C/C++ 进程代码注入与提权/降权
如果将shellcode注入到具有特定权限的进程中,我们就可以获得与该进程相同的权限,此方法可以用于提权与降权操作,注入有多种方式,最简单的是直接将metasploit生成的有效载荷直接注入到目标进程 ...
- Msfvenonm生成一个后门木马
在前一篇文章中我讲了什么是Meterpreter,并且讲解了Meterpreter的用法.传送门-->Metasploit之Meterpreter 今天我要讲的是我们用Msfvenom制作一个木 ...
- 推荐算法-聚类-K-MEANS
对于大型的推荐系统,直接上协同过滤或者矩阵分解的话可能存在计算复杂度过高的问题,这个时候可以考虑用聚类做处理,其实聚类本身在机器学习中也常用,属于是非监督学习的应用,我们有的只是一组组数据,最终我们要 ...
- android 资料
https://xfans.gitbooks.io/android-book/content/issue-39/Android%20dex%E5%88%86%E5%8C%85%E5%AF%BC%E8% ...
- ThinkPHP5.1 输出到模板HTML格式被强行转成了字符
出现问题 控制器传给视图一个input标签,在视图页面显示出来就是 <input type='text'></input>,显示出来的是一个文本,而不是一个可以输入的文本框 解 ...
- Django(3)pycharm创建项目
创建项目 我们创建django项目有两种方式,命令行方式和使用pycharm工具创建,本文就介绍常用的pycharm工具创建 首先点击django,输入项目的名称,选择创建好的虚拟环境,最后点击c ...
- GDI编程基础
窗口和视口 视口是基于设备的采用的是设备坐标(单位:像素),窗口是基于程序的采用的是逻辑坐标(单位:像素/毫米/厘米等). 在默认的映射模式下,视口是与窗口等同的.但是如果改变其映射模式,则其对应的单 ...
- WTM Blazor,Blazor开发利器
Blazor从诞生到现在也有一段时间了,之前一直在观望,从dotnet5中Blazor的进步以及即将到来的dotnet6中的规划来看,Blazor的前途还是光明的,所以WtmBlazor来了! Bla ...
- 什么是redis的缓存雪崩, 穿透, 击穿?
目前的互联网系统没有几个不使用缓存的, 但是只要使用缓存的话就会面临这几个问题, 如使用redis缓存技术, 可能会遇到缓存的雪崩, 穿透, 以及击穿. 首先来看一个简单的正常缓存流程: 如用户访问J ...
- 转圈 箭头 ⟳ 10227 27F3 刷新 HTML常用的特殊符号总结
HTML常用的特殊符号总结 2014年9月12日 57621次浏览 html中经常会用到一些特殊符号,例如箭头,雪花,心形等等,这些符号就不用css样式或者图片来写了,直接用html特殊符号可以实现. ...