多级中间表示概述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 。

最新文章

  1. 使用jquery脚本获取随笔、文章和评论的统计数,自定义显示位置
  2. 快速反编绎jar war包
  3. 数据库中 dbo是什么意思
  4. Flask-SQLAlchemy 学习总结
  5. 两个有用的shell工具总结
  6. NODEjs常见错误检查
  7. 黑马程序员 SaveFileDialog的跨线程调用 (专题三)
  8. php中一些安全性防止问题建议
  9. NYIST 914Yougth的最大化【二分搜索/Dinkelbach算法】
  10. UVA 11769 All Souls Night 的三维凸包要求的表面面积
  11. 第一个windows 小游戏 贪吃蛇
  12. OI队内测试二【数论概率期望】
  13. Java笔记(day9~day10)
  14. 使用python和selenium写一个百度搜索的case
  15. 如何评价 React 实现的前端 UI 库 material-ui?
  16. Linux内核设计与实现(chapter1/2)
  17. Logistic Regression Using Gradient Descent -- Binary Classification 代码实现
  18. 2、Android-UI(布局待完成)
  19. php中mysql_fetch_row() 和mysql_fetch_array之间有什么区别
  20. openssl基础

热门文章

  1. 【VritualEnv】虚拟环境的介绍和基本使用
  2. 缓冲区溢出分析第07课:MS06-040漏洞研究——静态分析
  3. 基于防火墙的VRRP技术--华为防火墙双机热备--VGMP
  4. 重新封装了一下NODE-MONGO 使其成为一个独立的服务.可以直接通过get/post来操作
  5. pr中打开Audition编辑剪辑?
  6. java之泛型的使用
  7. dubbo服务暴露原理-远程暴露
  8. 游戏视野系统算法 (FOV using recursive shadowcasting)
  9. re_path 的 ?P<>
  10. [bug] SSM项目:Cannot load driver class: com.mysql.jdbc.Driver