Verified tensor-program optimization via high-level scheduling rewrites

<jats:p>We present a lightweight Coq framework for optimizing tensor kernels written in a pure, functional array language. Optimizations rely on user scheduling using series of verified, semantics-preserving rewrites. Unusually for compilation targeting imperative code with arrays and nested l...

Full description

Bibliographic Details
Main Authors: Liu, Amanda (Author), Bernstein, Gilbert Louis (Author), Chlipala, Adam (Author), Ragan-Kelley, Jonathan (Author)
Format: Article
Language:English
Published: Association for Computing Machinery (ACM), 2022-07-19T13:14:37Z.
Subjects:
Online Access:Get fulltext
LEADER 01540 am a22001933u 4500
001 143847
042 |a dc 
100 1 0 |a Liu, Amanda  |e author 
700 1 0 |a Bernstein, Gilbert Louis  |e author 
700 1 0 |a Chlipala, Adam  |e author 
700 1 0 |a Ragan-Kelley, Jonathan  |e author 
245 0 0 |a Verified tensor-program optimization via high-level scheduling rewrites 
260 |b Association for Computing Machinery (ACM),   |c 2022-07-19T13:14:37Z. 
856 |z Get fulltext  |u https://hdl.handle.net/1721.1/143847 
520 |a <jats:p>We present a lightweight Coq framework for optimizing tensor kernels written in a pure, functional array language. Optimizations rely on user scheduling using series of verified, semantics-preserving rewrites. Unusually for compilation targeting imperative code with arrays and nested loops, all rewrites are source-to-source within a purely functional language. Our language comprises a set of core constructs for expressing high-level computation detail and a set of what we call reshape operators, which can be derived from core constructs but trigger low-level decisions about storage patterns and ordering. We demonstrate that not only is this system capable of deriving the optimizations of existing state-of-the-art languages like Halide and generating comparably performant code, it is also able to schedule a family of useful program transformations beyond what is reachable in Halide.</jats:p> 
546 |a en 
655 7 |a Article 
773 |t 10.1145/3498717 
773 |t Proceedings of the ACM on Programming Languages