Specifying and Executing Optimizations for Parallel Programs

William Mansky
(University of Illinois at Urbana-Champaign)
Dennis Griffith
(University of Illinois at Urbana-Champaign)
Elsa L. Gunter
(University of Illinois at Urbana-Champaign)

Compiler optimizations, usually expressed as rewrites on program graphs, are a core part of all modern compilers. However, even production compilers have bugs, and these bugs are difficult to detect and resolve. The problem only becomes more complex when compiling parallel programs; from the choice of graph representation to the possibility of race conditions, optimization designers have a range of factors to consider that do not appear when dealing with single-threaded programs. In this paper we present PTRANS, a domain-specific language for formal specification of compiler transformations, and describe its executable semantics. The fundamental approach of PTRANS is to describe program transformations as rewrites on control flow graphs with temporal logic side conditions. The syntax of PTRANS allows cleaner, more comprehensible specification of program optimizations; its executable semantics allows these specifications to act as prototypes for the optimizations themselves, so that candidate optimizations can be tested and refined before going on to include them in a compiler. We demonstrate the use of PTRANS to state, test, and refine the specification of a redundant store elimination optimization on parallel programs.

In Dragan Bošnački, Stefan Edelkamp, Alberto Lluch Lafuente and Anton Wijs: Proceedings 3rd Workshop on GRAPH Inspection and Traversal Engineering (GRAPHITE 2014), Grenoble, France, 5th April 2014, Electronic Proceedings in Theoretical Computer Science 159, pp. 58–70.
Published: 29th July 2014.

ArXived at: http://dx.doi.org/10.4204/EPTCS.159.6 bibtex PDF
References in reconstructed bibtex, XML and HTML format (approximated).
Comments and questions to: eptcs@eptcs.org
For website issues: webmaster@eptcs.org