Rationale
This section contains a collection of documents describing the motivation and rationale for some of the design decisions behind MLIR.
- MLIR: Incremental Application to Graph Algorithms in ML Frameworks
- A discussion of how the adoption of MLIR can be taken in incremental steps, with each step providing tangible benefits along the way. Refutes the idea that full adoption of MLIR is required before we can reap the benefits of MLIR.
- MLIR Rationale
- Introduces the motivation for MLIR and captures design discussions and decisions made for various core features of MLIR.
- Generic DAG Rewriter Infrastructure Rationale
- Details the rationale behind a general DAG-to-DAG rewrite infrastructure for MLIR.
- Linalg Dialect Rationale: The Case for Compiler-Friendly Custom Operations
- Describes the key design principles that led to the existing implementation of Linalg and lessons learned along the way.
- MLIR: The case for a simplified polyhedral form
- An early design proposal exploring the tradeoffs of using a simplified form for polyhedral compiler techniques in MLIR instead of the traditional polyhedral schedule list form.
- Usage of ‘const’ in MLIR, for core IR types
- Explains the rationale for eschewing the use of
const
entirely for the core IR types in MLIR.
Rationale Docs
- Generic DAG Rewriter Infrastructure Rationale
- Linalg Dialect Rationale: The Case For Compiler-Friendly Custom Operations
- MLIR Rationale
- MLIR: Incremental Application to Graph Algorithms in ML Frameworks
- MLIR: The case for a simplified polyhedral form
- Side Effects & Speculation
- Usage of 'const' in MLIR, for core IR types