Reference. Vectorization for digital signal processors via equality saturation
Cite
Cites 41 works (2 here)
With notes (2)
egg: Fast and Extensible Equality Saturation willsey-2021-egg
An e-graph efficiently represents a congruence relation over many expressions. Although they were originally developed in the late 1970s for use in automated theorem provers, a more recent technique known as equality saturation repurposes e-graphs to implement state-of-the-art, rewrite-driven compiler optimizations and program synthesizers. However, e-graphs remain unspecialized for this newer use case. Equality saturation workloads exhibit distinct characteristics and often require ad-hoc e-graph extensions to incorporate transformations beyond purely syntactic rewrites. This work contributes two techniques that make e-graphs fast and extensible, specializing them to equality saturation. A new amortized invariant restoration technique called rebuilding takes advantage of equality saturation’s distinct workload, providing asymptotic speedups over current techniques in practice. A general mechanism called e-class analyses integrates domain-specific analyses into the e-graph, reducing the need for ad hoc manipulation. We implemented these techniques in a new open-source library called egg. Our case studies on three previously published applications of equality saturation highlight how egg’s performance and flexibility enable state-of-the-art results across diverse domains.
A Synthesis-Aided Compiler for DSP Architectures (WiP Paper) vanhattum-2020-a
External (39)
- Automatic generation of high-performance quantized machine learning kernels (2020)
- Synthesizing structured CAD models with equality saturation and inverse transformations (2020)
- Perfect is the Enemy of Good: Best-Effort Program Synthesis (2020)
- Tensilica Customizable Cores (Cadence) (2020)
- Swizzle Inventor: Data Movement Synthesis for GPU Kernels (2019)
- OpenVSLAM: A Versatile Visual SLAM Framework (2019)
- GoSLP: Globally Optimized Superword Level Parallelism Framework (2018)
- Program Generation for Small-Scale Linear Algebra Applications (2018)
- ORB-SLAM2: An Open-Source SLAM System for Monocular, Stereo, and RGB-D Cameras (2017)
- Extending Halide to Improve Software Development for Imaging DSPs (2017)
- Video SIMDBench: Benchmarking the Compiler Vectorization for Multimedia Applications (2016)
- Optimizing Synthesis with Metasketches (2016)
- Verified Lifting of Stencil Computations (2016)
- Theia Multiview Geometry Library: Tutorial & Reference (2016)
- A basic linear algebra compiler for embedded processors (2015)
- ORB-SLAM: A Versatile and Accurate Monocular SLAM System (2015)
- A lightweight symbolic virtual machine for solver-aided host languages (2014)
- MSL: A Synthesis Enabled Language for Distributed Implementations (2014)
- The effect of communication and synchronization on Amdahl's law in multicore systems (2014)
- From relational verification to SIMD loop synthesis (2013)
- Exploiting Vector Instructions with Generalized Stream Fusion (2013)
- Halide: a language and compiler for optimizing parallelism, locality, and recomputation in image processing pipelines (2013)
- Automatic SIMD vectorization of fast fourier transforms for the larrabee and AVX instruction sets (2011)
- Double window optimisation for constant time visual SLAM (2011)
- Modeling critical sections in Amdahl's law and its implications for multicore design (2010)
- Eigen v3 (software) (2010)
- Equality saturation: a new approach to optimization (2009)
- Generating SIMD Vectorized Permutations (2008)
- Amdahl’s Law Revisited for Single Chip Systems (2007)
- Auto-Vectorization of Interleaved Data for SIMD (2006)
- Combinatorial Sketching for Finite Programs (2006)
- A rewriting system for the vectorization of signal transforms (2006)
- SPIRAL: Code Generation for DSP Transforms (2005)
- A comparison of empirical and model-driven optimization (2003)
- Xtensa: A configurable and extensible processor (2000)
- Exploiting Superword Level Parallelism with Multimedia Instruction Sets (2000)
- Automatic translation of FORTRAN programs to vector form (1987)
- Complexity of matching problems (1987)
- Denali: A Goal-directed Superoptimizer