MLIR CGO 2021

MLIR Scaling Compiler Infrastructure for Domain Specific Computation

Posted by Treaseven on December 12, 2024

Motivation

  • 解决软件碎片化问题
  • 支持异构硬件编译
  • 降低构建领域特定编译器的成本
  • 连接现有编译器

Design principles

Little Builtin, Everything Customizable [Parsimony]

SSA and Regions [Parsimony] SSA是一种中间代码的表示形式,SSA形式要求每个变量只能被赋值一次,如果一个变量需要被多次赋值,就创建改变量的新版本

普通代码
x = 1
x = x + 1
x = x * 2
SSA形式
x1 = 1
x2 = x1 + 1
x3 = x2 * 2

传统IR:将嵌套结构展平成一系列基本块和跳转;MLIR:保持代码的层次结构,直接表示嵌套关系

Maintain Higher-Level Semantics [Progressivity] 保留需要用于分析和性能优化的信息和结构;避免过早地降级转换导致信息丢失;保持计算的结构,渐进式地降级到硬件抽象

Declaration and Validation [Parsimony]

Source Location Tracking [Traceability]

Reference

MLIR: Scaling Compiler Infrastructure for Domain Specific Computation