Synthesizing Structured Traversals from Attribute Grammars
University of California, Berkeley
University of California, Berkeley, 2012
@article{meyerovich2012synthesizing,
title={Synthesizing Structured Traversals from Attribute Grammars},
author={Meyerovich, L.A. and Torok, M.E. and Atkinson, E. and Bod{i}k, R.},
year={2012}
}
We examine how to automatically decompose a program into structured parallel traversals over trees. In our system, programs are declaratively specified as attribute grammars and parallel traversals are defined by a compiler designed to optimize them for both GPUs and multicore CPUs. Our synthesizer automatically finds a correct schedule of the attribute grammar as structured traversals. The combination of traversals impacts algorithm performance and software integration. We therefore introduce a declarative language of traversal schedules where programmers may sketch any part of the schedule and the synthesizer will fill in the rest. For the same motivations, the synthesizer autotunes over any underconstrained fragment and can answer debugging queries about if and how such sketches can be completed. This paper presents our synthesizer, and its support for finding, specifying, debugging, and autotuning over schedules of structured tree traversals. We evaluate our approach with two case studies. First, we present a parallel schedule for a large fragment of CSS and report a speedup of 3x on multicore hardware. Second, we created a GPU-accelerated visualization language for real-time interactive animations of over 100,000 nodes.
October 1, 2012 by hgpu