Computer Science Building
140 Governors Drive
Amherst, MA 01003
I am working to improve the way developers and researchers evaluate software performance. My work on Stabilizer enables statistically rigorous performance evaluation in the presence of memory layout effects. The effect of changing a program's layout can dwarf the real impact of many compiler optimizations, but these optimizations nearly always change a program's layout by inserting or removing instructions. Stabilizer controls for this effect with randomization. I am currently working on Coz, a profiler that identifies code where optimizations will have the largest impact, not just where a program spends its time. Coz uses a new technique called Causal Profiling to measure the impact of many potential optimizations in a running program.
Coz: Causal Profiling
Causal Profiling is a novel profiling technique that directly measures the effect of hypothetical optimizations to determine where developers should spend time tuning performance. Coz is our prototype implementation of this technique for unmodified Linux x86 executables.
Stabilizer: Statistically Rigorous Performance Evaluation
Stablizer is a compiler pass and runtime system that eliminates measurement bias, enabling rigorous performance evaluation using standard statistical techniques. Stabilizer uses LLVM to enable dynamic random placement of code, stack, heap, and globals for C and C++ applications.
AutoMan: A Platform for Integrating Human-Based and Digital Computation
AutoMan is a platform for integrating human-based and digital computation. It allows programmers to "program with people," which appear to the programmer to be ordinary function calls. AutoMan automatically handles details like quality control, payment, and task scheduling. It is currently implemented as a domain-specific language embedded in Scala, and uses Amazon's Mechanical Turk as a backend. AutoMan was presented by Dan Barowy at OOSLA in October 2012.
DThreads: Efficient and Deterministic Multithreading
I worked with Tongping Liu on Dthreads, a drop-in replacement for pthreads that guarantees determininstic execution of parallel programs. Dthreads was presented at SOSP in October 2011.