Research
The high level goal of my research is to make computation as efficient (i.e., more work per joule) as possible in a commercially feasible manner. I'm currently focusing on accomplishing this by improving programmer productivity for heterogeneous many-core architectures. Here's a brief PowerPoint presentation highlighting how I propose to do this.
The computer industry has historically provided exponentially increasing computational power from their designs. This is important because cool applications that consumers demand require this computational power. Recently, however, the power wall has forced industry to abandon its time-tested approach of providing more computation through complex uni-core processors. Currently, the most popular technique is homogeneous many-core processors, where additional computational power is provided through many, simpler cores. These systems are still very inefficient for many important workloads.
An increasingly popular approach to provide efficient computational power is through hardware customization, one focus of my work. Here are some of the projects I am (or have been) interested in working on.
Customized Architectures/Accelerators
- Domain specific architectures (database, financial, etc.) or architectures for specific classes of computation (e.g., random algorithms)
- Architectural integration of accelerators
- Extending currently popular accelerators (e.g., GPUs, FPGAs) to make them more efficient/programmable/etc.
Accelerator Virtualization
- Rethinking the static/dynamic tradeoff when compiling for accelerators (i.e., what compilation phases need to be done offline, and what can be done dynamically)
- Managing threads in a heterogeneous multi-core environment (i.e., evaluating accelerators that would best run a thread and retargeting it as needed)
- Load balancing and control systems needed in a virtualized heterogeneous multi-core environment
Compilation for Accelerators
- Code generations challenges for custom architectures
- Automatic identification of computation to accelerate
- Accelerator descriptions for retargetable compilation
- Programming language assistance for targeting accelerators
