• Publications
  • Influence
The Landscape of Parallel Computing Research: A View from Berkeley
The parallel landscape is frame with seven questions, and the following are recommended to explore the design space rapidly: • The overarching goal should be to make it easy to write programs that execute efficiently on highly parallel computing systems • The target should be 1000s of cores per chip, as these chips are built from processing elements that are the most efficient in MIPS (Million Instructions per Second) per watt, MIPS per area of silicon, and MIPS each development dollar.
Combinatorial sketching for finite programs
SKETCH is a language for finite programs with linguistic support for sketching and its combinatorial synthesizer is complete for the class of finite programs, guaranteed to complete any sketch in theory, and in practice has scaled to realistic programming problems.
Syntax-guided synthesis
This work describes three different instantiations of the counter-example-guided-inductive-synthesis (CEGIS) strategy for solving the synthesis problem, reports on prototype implementations, and presents experimental results on an initial set of benchmarks.
Program synthesis by sketching
Sketching is introduced, a new style of synthesis that offers a fresh approach to the synergy problem and shows that sketching is a viable approach to making synthesis practical in a general programming context.
Mining specifications
Program verification is a promising approach to improving program quality, because it can search all possible program executions for specific errors. However, the need to formally describe correct
ABCD: eliminating array bounds checks on demand
ABCD is a light-weight algorithm for elimination of Array Bounds Checks on Demand that can be applied to a set of frequently executed (hot) bounds checks, which makes it suitable for the dynamic-compilation setting, in which compile-time cost is constrained but hot statements are known.
Jungloid mining: helping to navigate the API jungle
Reuse of existing code from class libraries and frameworks is often difficult because APIs are complex and the client code required to use the APIs can be hard to write. We observed that a common
Refinement-based context-sensitive points-to analysis for Java
This work has developed a refinement-based analysis that succeeds by simultaneously refining handling of method calls and heap accesses, allowing the analysis to precisely analyze important code while entirely skipping irrelevant code.
A "flight data recorder" for enabling full-system multiprocessor deterministic replay
A practical low-overhead hardware recorder for cachecoherent multiprocessors, called Flight Data Recorder (FDR), which like an aircraft flight data recorder continuously records the execution, even on deployed systems, logging the execution for post-mortem analysis.
A view of the parallel computing landscape
Writing programs that scale with increasing numbers of cores should be as easy as writing programs for sequential computers.