Here are a few short descriptions of some research projects I’ve worked on recently or that I’m working on now. Some older research projects I did as an undergrad are described on my CV.
EnerJ: Energy-Efficient Programming
The power consumption of CPUs and memory systems has traditionally been constrained by the need for strict correctness guarantees: processor voltage, for instance, must allow enough slack as to prevent even the rarest timing errors. However, recent work has shown that many modern applications do not require perfect correctness. An image renderer, for example, can tolerate occasional pixel errors without compromising overall quality of service. However, it is infeasible to completely abandon correctness guarantees—to do so would make development of reliable software difficult or impossible. EnerJ is an extension to Java that exposes hardware faults in a safe, principled manner. Simulation of selectively reliable hardware suggests that EnerJ programs can save large amounts of energy with only slight sacrifices to quality of service. A paper about EnerJ was in PLDI 2011; a follow-on paper about hardware support for EnerJ will appear in ASPLOS 2012.
Understanding Performance and Power on the Web
Web browsers’ speed and power consumption have become salient concerns with the emergence of Web-enabled mobile devices. However, the relationship between page content and browser performance is poorly understood. I am exploring a machine-learning technique that automatically discovers correlations between page characteristics and browser performance. The results can help content providers deploy better-performing Web sites and assist browser developers in optimizing their implementations.
OSHA: Explicit Shared-Memory Communication
Shared memory is a fast, simple, and ubiquitous model for multiprocessor computing. However, shared-memory programs are prone to subtle, hard-to-diagnose concurrency bugs. Much of this difficulty arises because cross-thread communication in shared-memory programs is transparent and not easily apparent to the programmer. Organized Sharing (OSHA) consists of a language extension that makes communicating code explicit and an implementation (“OSHAJava”) of a high-performance dynamic checker that can catch concurrency bugs in annotated programs before they cause problems. The work was published in OOPSLA 2010.
Publications
Look me up at DBLP for another view on my publications. Where possible, the titles below are “magic” links to the ACM database server that should let you view the PDF for free while letting the ACM keep track of viewer statistics. Use the “local PDF” links if you prefer bypass this rigmarole.
Conference Papers
- “Architecture Support for Disciplined Approximate Programming.” Hadi Esmaeilzadeh, Adrian Sampson, Luis Ceze, and Doug Burger. In ASPLOS 2012.
- “EnerJ: Approximate Data Types for Safe and General Low-Power Computation.” Adrian Sampson, Werner Dietl, Emily Fortuna, Danushen Gnanapragasam, Luis Ceze, and Dan Grossman. In PLDI 2011.
- “Composable Specifications for Structured Shared-Memory Communication.” Benjamin Wood, Adrian Sampson, Luis Ceze, and Dan Grossman. In OOPSLA 2010. Local PDF.
- “On-line Distributed Traffic Grooming.” R. Jordan Crouser, Brian Rice, Adrian Sampson, and Ran Libeskind-Hadas. In ICC 2008.
Workshop Papers
- “Addressing Dark Silicon Challenges with Disciplined Approximate Computing.” Hadi Esmaeilzadeh, Adrian Sampson, Michael Ringenburg, Dan Grossman, Luis Ceze, and Doug Burger. In DaSi 2012 (co-located with ISCA).
- “Towards Neural Acceleration for General-Purpose Approximate Computing.” Hadi Esmaeilzadeh, Adrian Sampson, Luis Ceze and Doug Burger. In WEED 2012 (co-located with ISCA).
- “Greedy Coherence.” Emily Fortuna, Brandon Lucia, Adrian Sampson, Benjamin Wood and Luis Ceze. In HPPC 2011 (co-located with MICRO).
Other Stuff
- “Dense Approximate Storage in Phase-Change Memory.” Jacob Nelson, Adrian Sampson, and Luis Ceze. Presented in the Ideas & Perspectives session at ASPLOS 2011.