  This paper presents the design of Glow, a machine learning compiler for
heterogeneous hardware. It is a pragmatic approach to compilation that enables
the generation of highly optimized code for multiple targets. Glow lowers the
traditional neural network dataflow graph into a two-phase strongly-typed
intermediate representation. The high-level intermediate representation allows
the optimizer to perform domain-specific optimizations. The lower-level
instruction-based address-only intermediate representation allows the compiler
to perform memory-related optimizations, such as instruction scheduling, static
memory allocation and copy elimination. At the lowest level, the optimizer
performs machine-specific code generation to take advantage of specialized
hardware features. Glow features a lowering phase which enables the compiler to
support a high number of input operators as well as a large number of hardware
targets by eliminating the need to implement all operators on all targets. The
lowering phase is designed to reduce the input space and allow new hardware
backends to focus on a small number of linear algebra primitives.
