Can you compare MLIR vs. GLOW?

Hello guys,

before going to deep study of GLOW, can you please somehow elaborate on MLIR and compare it to GLOW?
What are the benefits or possible drawbacks of GLOW vs. MLIR?
Are these comparable technologies or these serve other purposes indeed?

There’s some overlap, but in general they serve different purposes. MLIR is compiler infrastructure – it’s intended to be a useful multi-level IR that can be used across different SW stacks. Meanwhile, Glow is itself a compiler framework that has its own two levels of Glow-specific IR, and also includes optimizations written specifically for Glow IR, has features such as AOT compilation for LLVM-based backends, a high-performance runtime for server-oriented deployment, etc. In theory we could for example replace Glow’s IR with MLIR (but this is not something we’re planning).

Hello Jordan,

What you mean by LLVM-based backends?

Glow uses LLVM in two ways: 1) Across the whole compiler as a support library e.g. for many of its efficient data structures, CL options, serialization, etc. 2) Separately, backends may use LLVM for low-level codegen for specific architectures once they go below Glow Instruction IR. E.g. the Glow CPU backend uses this, and other private backends may as well (maintained privately by OSS users so you don’t see them on Github).