From Relational Verification to SIMD Loop Synthesis
- Gilles Barthe ,
- Juan Manuel Crespo ,
- Sumit Gulwani ,
- Cesar Kunz ,
- Mark Marron
PPoPP '13 Proceedings of the 18th ACM SIGPLAN symposium on Principles and practice of parallel programming |
Published by Association for Computing Machinery
Best Paper Award & CACM Highlight Nomination
Download BibTexExisting pattern-based compiler technology is unable to effectively exploit the full potential of SIMD architectures. We present a new program synthesis based technique for auto-vectorizing performance critical innermost loops. Our synthesis technique is applicable to a wide range of loops, consistently produces performant SIMD code, and generates correctness proofs for the output code. The synthesis technique, which leverages existing work on relational verification methods, is a novel combination of deductive loop restructuring, synthesis condition generation and a new inductive synthesis algorithm for producing loop-free code fragments. The inductive synthesis algorithm wraps an optimized depth-first exploration of code sequences inside a CEGIS loop. Our technique is able to quickly produce SIMD implementations (up to 9 instructions in 0.12 seconds) for a wide range of fundamental looping structures. The resulting SIMD implementations outperform the original loops by 2x-3x.
© ACM. This is the author's version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. The definitive version can be found at http://dl.acm.org.