This paper demonstrates a novel combination of program synthesis and verification to lift stencil computations from low-level Fortran code to a high-level summary expressed using a predicate language. The technique is sound and mostly automated, and leverages counter-example guided inductive synthesis (CEGIS) to find provably correct translations. Lifting existing code to a high-performance description language has a number of benefits, including maintainability and performance portability. For example, our experiments show that the lifted summaries can enable domain specific compilers to do a better job of parallelization as compared to an off-the-shelf compiler working on the original code, and can even support fully automatic migration to hardware accelerators such as GPUs. We have implemented verified lifting in a system called STNG and have evaluated it using microbenchmarks, mini-apps, and real-world applications. Here, we demonstrate the benefits of verified lifting by first automatically summarizing Fortran source code into a high-level predicate language, and subsequently translating the lifted summaries into Halide, with the translated code achieving median performance speedups of 4.1X and up to 24X for non-trivial stencils as compared to the original implementation.
@article{osti_1557573,
author = {Kamil, Shoaib and Cheung, Alvin and Itzhaky, Shachar and Solar-Lezama, Armando},
title = {Verified lifting of stencil computations},
annote = {This paper demonstrates a novel combination of program synthesis and verification to lift stencil computations from low-level Fortran code to a high-level summary expressed using a predicate language. The technique is sound and mostly automated, and leverages counter-example guided inductive synthesis (CEGIS) to find provably correct translations. Lifting existing code to a high-performance description language has a number of benefits, including maintainability and performance portability. For example, our experiments show that the lifted summaries can enable domain specific compilers to do a better job of parallelization as compared to an off-the-shelf compiler working on the original code, and can even support fully automatic migration to hardware accelerators such as GPUs. We have implemented verified lifting in a system called STNG and have evaluated it using microbenchmarks, mini-apps, and real-world applications. Here, we demonstrate the benefits of verified lifting by first automatically summarizing Fortran source code into a high-level predicate language, and subsequently translating the lifted summaries into Halide, with the translated code achieving median performance speedups of 4.1X and up to 24X for non-trivial stencils as compared to the original implementation.},
doi = {10.1145/2908080.2908117},
url = {https://www.osti.gov/biblio/1557573},
journal = {ACM SIGPLAN Notices},
issn = {ISSN 0362-1340},
number = {6},
volume = {51},
place = {United States},
publisher = {ACM},
year = {2016},
month = {06}}
Proceedings of the 12th international conference on Architectural support for programming languages and operating systems - ASPLOS-XIIhttps://doi.org/10.1145/1168857.1168907
Proceedings of the 23rd ACM SIGPLAN conference on Object oriented programming systems languages and applications - OOPSLA '08https://doi.org/10.1145/1449764.1449767
Proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems - ASPLOS '13https://doi.org/10.1145/2451116.2451150
CGO '14: 12th Annual IEEE/ACM International Symposium on Code Generation and Optimization, Proceedings of Annual IEEE/ACM International Symposium on Code Generation and Optimizationhttps://doi.org/10.1145/2544137.2544160
PLDI '14: ACM SIGPLAN Conference on Programming Language Design and Implementation, Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementationhttps://doi.org/10.1145/2594291.2594339
Mullapudi, Ravi Teja; Vasista, Vinay; Bondhugula, Uday
Proceedings of the Twentieth International Conference on Architectural Support for Programming Languages and Operating Systems - ASPLOS '15https://doi.org/10.1145/2694344.2694364
PLDI '15: ACM SIGPLAN Conference on Programming Language Design and Implementation, Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementationhttps://doi.org/10.1145/2737924.2737974
Proceedings of the second international conference on Architectual support for programming languages and operating systemshttps://doi.org/10.1145/36206.36194