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.
Elastic applications for distributed and cloud computing
This project aims to develop programming models that will allow programmers to deploy elastic applications to cloud and distributed systems. Elastic applications can adjust their execution to adapt to changing resources (e.g., automatically launching additional processing tasks to take advantage of available computing resources), making them ideally suited to cloud execution environments where the availability and characteristics of resources are dynamic and unpredictable. This work builds on the Mace project.
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.