多级中间表示概述MLIR
MLIR项目是一种构建可重用和可扩展的编译器基础结构的新颖方法。MLIR旨在解决软件碎片,改善异构硬件的编译,显着降低构建特定于域的编译器的成本以及帮助将现有编译器连接在一起的问题。
要引用MLIR,请使用this Arxiv publication 。
更多资源
有关MLIR的更多信息,请参见:
• LLVM论坛的MLIR部分中有 任何问题。
• LLVM不和谐 服务器的MLIR通道上的实时讨论 。
• 以前的 talks 。
另请参阅 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. MLIR深入 —— 转换流程详解(以Toy接入为例)

    文章目录 1. Toy接入MLIR 1.1 Toy源码和AST 1.2 生成(未优化)MLIR表达式 2. MLIR 表达式变形 2.1 手动编写代码进行表达式的匹配与重写 2.2 采用 DDR 自动 ...

  3. 初学python还是swift-Python并不完美,Swift正在成长为深度学习语言 !

    如果你懂编程,在听到 Swift 时,你可能会想到为 iOS 或 MacOS 开发应用程序.如果你懂深度学习,那么你肯定听闻过 Swift for Tensorflow(简称 S4TF):https: ...

  4. 软件评测师 各章节考点汇总(基础知识部分)

    目录 计算机系统构成及硬件基础知识 数的表示 逻辑运算 定点数与浮点数 总线 CPU RISC/CISC指令 流水线 存储体系 Cache 寻址方式 校验码 输入/输出 操作系统知识 进程 程序语言基 ...

  5. C语言 | 常见问题汇总

    面向刚开始学习C语言的同学,汇总了一些C语言常见的问题.下方蓝色的字体就是链接啦:) 一.头文件<stdio.h>与"stdio.h"的区别 二.主函数main与ret ...

  6. 机械设计原理与方法类毕业论文文献都有哪些?

    本文是为大家整理的机械设计原理与方法主题相关的10篇毕业论文文献,包括5篇期刊论文和5篇学位论文,为机械设计原理与方法选题相关人员撰写毕业论文提供参考. 1.[期刊论文]物理原理在机械设计中的应用研究 ...

  7. 分段式多级离心泵_多级分段式离心泵

    2014-10-13多级泵离心泵的基本结构:(1)分段式多级离心泵 分段式多级离心泵是一种垂直剖分多级泵,它由一个前段.一个 后段和若干个中段组成,并用螺栓连接为一体.泵轴的两端用轴承支 撑,泵轴中间 ...

  8. (十三)【模电】(多级放大电路)集成运算放大电路概述

    [模电专栏] 文章目录 A 集成运算放大电路概述 A.a 集成运放的电路结构特点 A.b 集成运放的组成和各部分的作用 A.c 集成运放的电压传输特性 A.d 集成运放的主要性能指标 A 集成运算放大 ...

  9. MLIR(Multi-Level Intermediate Representation)概述

    我们知道TensorFlow是使用数据流图作为数据结构来进行各种数值计算,要让这些计算运行在硬件上,我们需要一个TensorFlow的编译生态系统: 整个编译流程先将TensorFlow的图转化为XL ...

最新文章

  1. ESTabBarController
  2. vscode 搜索结果 整行_如何用VSCode愉快的写Python
  3. MySQL 查看约束,添加约束,删除约束 添加列,修改列,删除列
  4. 远程连接MySQL数据库失败
  5. Path does not chain with any of the trust anchors
  6. 杭电1860--统计字符
  7. jsp与jsp页面间的值传递与接收
  8. android 禁用dlsym_Android 7.0 dlopen 函数分析
  9. 卸载frontpage服务器扩展_免费0撸一月腾讯云服务器
  10. 【EI会议】 2021年图像处理与智能控制国际学术会议(IPIC 2021)
  11. Mybatis自学日志04(日志工厂)
  12. Shiro Shiro Web Support and EnvironmentLoaderListener
  13. sql server 利用 For Xml Path('') 多行数据拼接成一个字符串
  14. java 继承 封装 多态 详解
  15. 2017-12-3 Crontab(字符串处理)
  16. openpyxl 2.5.0中文文档
  17. 4G 网络跟 5G 的区别
  18. 《中国通史》学习记录
  19. IDC:微软Windows将于2007年失去统治地位
  20. 实战引流技巧,教你如何做好运营

热门文章

  1. 关于某日访问次数最多的IP的topK问题的三种解法
  2. Qt---布局,设置控件边距,拉伸因子
  3. SMOTE算法代码实现-机器学习
  4. [PyTorch] rnn,lstm,gru中输入输出维度
  5. Java并发编程之CountDownLatch、CyclicBarrier和Semaphore
  6. LeetCode简单题之找出两数组的不同
  7. LeetCode简单题之丢失的数字
  8. MinkowskiEngine Miscellaneous Classes杂类
  9. NVIDIA Turing Architecture架构设计(上)
  10. 单目摄像头检测6D姿态