Backwards Data-Flow Analysis using Prophecy Variables in the BuildIt System
Ajay Brahmakshatriya, Saman Amarasinghe, Martin Rinard

TL;DR
This paper introduces prophecy variables in BuildIt, a system that enables future-aware program transformations and optimizations without traditional backwards analysis, reducing engineering effort and improving performance.
Contribution
It formalizes prophecy variables for forward execution-based analysis, integrating them into BuildIt to enhance program optimization capabilities.
Findings
Prophecy variables enable future-aware optimizations in BuildIt.
Repeated forward execution with prophecy variables improves performance.
The approach reduces engineering effort compared to traditional backwards analysis.
Abstract
Many program transformations and optimizations require information about the future behavior of the program. A standard way to obtain this information is to build an intermediate program representation, then use a backwards program analysis to propagate relevant information against the flow of control back to the transformation/optimization site. We instead propose to use prophecy variables, which predict information about the future execution of the program, to enable such transformations and optimizations. We implement prophecy variables in BuildIt, a lightweight domain specific language implementation system. BuildIt uses staged compilation to implement high performance domain specific languages embedded within a standard general purpose programming language (C++). The BuildIt first phase uses standard C++ program execution to generate optimized C, C++, and CUDA second phase code.…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Logic, programming, and type systems · Security and Verification in Computing
