# MLIR: Scaling Compiler Infrastructure for Domain Specific Computation - Background knowledge - Problem context - The solution - Concluding remarks # Background knoledge Levels of abstraction Source code: x=1+2 Can be made into an AST and this can be made into Byte Code that can be run by a virtual machine # Static Single asssignment (SSSA) We replace y:=1;y:=2;x:=y to $y_1:=1;y_2:=2;x:=y_2$, because a variable is only assigned once # Control flow graphs A if (x>0) then B else C D Can be made into a graph with paths A->B->D and A->C->D. # Problem context The problem stated first is that of tenserflow. When working on it they saw that it was a problem with compilers in general. Every programming language has it's own Internal Representation (IR) meaning there is no common infrastructure # Solution Have one IR that has different - Dialects - Operations # Design principles - Little built-in, everything customizable - Declaration and validation - Source location tracking - SSA and Regions