Glow: Graph Lowering Compiler Techniques for Neural Networks

Nadav Rotem, Jordan Fix, Saleem Abdulrasool, Garret Catron, Summer Deng +13 more
5/2/2018
cs.PL

Official code: pytorch/glow (3,317 stars, Apache-2.0, last commit 2024-05-11).

Abstract

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.

View on arXivView PDF

Code Implementations(1)

pytorch/glowOfficial100%
Apache-2.0

Compiler for Neural Network hardware accelerators

3,317700C, C++Sep 29, 20172 years agoApache-2.0

Similar Papers

Cite this paper

@article{rotem2018glow,
  title  = {Glow: Graph Lowering Compiler Techniques for Neural Networks},
  author = {Nadav Rotem and Jordan Fix and Saleem Abdulrasool and Garret Catron and Summer Deng and Roman Dzhabarov and Nick Gibson and James Hegeman and Meghan Lele and Roman Levenstein and Jack Montgomery and Bert Maher and Satish Nadathur and Jakob Olesen and Jongsoo Park and Artem Rakhov and Misha Smelyanskiy and Man Wang},
  year   = {2018},
  eprint = {1805.00907},
  archivePrefix = {arXiv},
  url    = {https://arxiv.org/abs/1805.00907}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/1805.00907.svg)](https://codeofpaper.com/paper/1805.00907)

Discussion