Adrian Sampson

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

Workshop Papers

Other Stuff