Thu 8 Nov 2018 16:15 - 16:37 at Studio 2 - Potpourri Chair(s): Anders Møller

Solver-aided tools rely on symbolic evaluation to reduce programming tasks, such as verification and synthesis, to satisfiability queries. Many reusable symbolic evaluation engines are now available as part of solver-aided languages and frameworks, which have made it possible for a broad population of programmers to create and apply solver-aided tools to new domains. But to achieve results for real-world problems, programmers still need to write code that makes effective use of the underlying engine, and understand where their code needs careful design to elicit the best performance. This task is made difficult by the all-paths execution model of symbolic evaluators, which defies both human intuition and standard profiling techniques.

This paper presents symbolic profiling, a new approach to identifying and diagnosing performance bottlenecks in programs under symbolic evaluation. To help with diagnosis, we develop a catalog of common performance anti-patterns in solver-aided code. To locate these bottlenecks, we develop SymPro, a new profiling technique for symbolic evaluation. SymPro identifies bottlenecks by analyzing two implicit resources at the core of every symbolic evaluation engine: the symbolic heap and symbolic evaluation graph. These resources form a novel performance model of symbolic evaluation that is general (encompassing all forms of symbolic evaluation), explainable (providing programmers with a conceptual framework for understanding symbolic evaluation), and actionable (enabling precise localization of bottlenecks). Performant solver-aided code carefully manages the shape of these implicit structures; SymPro makes their evolution explicit to the programmer.

To evaluate SymPro, we implement prototype profilers for the Rosette solver-aided language and the Jalangi program analysis framework. Applying SymPro to 15 published solver-aided tools, we discover 8 previously undiagnosed performance issues. Repairing these issues improves performance by orders of magnitude, and our patches were accepted by the tools’ developers. We also conduct a small user study with Rosette programmers, finding that SymPro helps them both understand what the symbolic evaluator is doing and identify performance issues they could not otherwise locate.

Thu 8 Nov

Displayed time zone: Guadalajara, Mexico City, Monterrey change

15:30 - 17:00
PotpourriOOPSLA at Studio 2
Chair(s): Anders Møller Aarhus University
15:30
22m
Talk
DeepBugs: A Learning Approach to Name-based Bug Detection
OOPSLA
Michael Pradel TU Darmstadt, Koushik Sen University of California, Berkeley
15:52
22m
Talk
ExceLint: Automatically Finding Spreadsheet Formula Errors
OOPSLA
Dan Barowy , Emery D. Berger University of Massachusetts, Amherst, Benjamin Zorn Microsoft Research
16:15
22m
Talk
Finding Code That Explodes Under Symbolic Evaluation
OOPSLA
James Bornholt University of Washington, Emina Torlak University of Washington
16:37
22m
Talk
FlashProfile: A Framework for Synthesizing Data Profiles
OOPSLA
Saswat Padhi University of California, Los Angeles, Prateek Jain Microsoft Research Lab, India, Daniel Perelman University of Washington, USA, Alex Polozov Microsoft Research, Sumit Gulwani Microsoft Research, Todd Millstein University of California, Los Angeles