These projects are either completed (I am not planning to work further on them), or dormant (pending new students or funding). Current projects can be found here.
Effective computation offloading
A promising strategy for writing applications intended to run on resource-limited devices such as mobile phones is to offload computation from those devices to cloud-computing services. This project looks at approaches that will allow programmers to write their programs in a unified style (without considering offloading) and rely on compiler and run-time support to automatically make appropriate decisions regarding how to partition the application between the mobile device and the cloud. In particular, we are looking at ways to enable more sophisticated offloading by considering multiple offloading sites and multiple offloading granularities.
The Galois project
Much of my early research focused on parallelizing irregular programs. These applications, which make heavy use of pointer-based data structures, have long resisted typical parallelization techniques. This project has looked at various abstractions and run-time systems that can allow programmers to expose and exploit amorphous data parallelism, a generalized form of data parallelism, that arises in irregular programs. Products of this project include the Galois system and the Lonestar benchmark suite.