I study how computer architecture can be shaped and specialized to solve interesting scientific problems more efficiently than on general purpose hardware.
My current research focuses on improving the performance and efficiency of Graphics Processor Units (GPUs) when running general purpose data parallel applications. While GPUs offer high computational throughput and vast memory bandwidth, many applications exhibit common behaviors and attributes that cause inefficient use of these resources. By identifying such properties, accelerators and other microarchitectural additions can be proposed that will alleviate inefficiencies to boost throughput. I primarily study inefficiencies caused by long latency memory accesses and have proposed small hardware additions that more efficiently generate memory requests and use existing memory bandwidth.
In the past, I investigated how to improve the performance and energy efficiency of mobile devices through modifications of the runtimes of these devices. This entailed identifying hot sections of code during application execution, offloading computationally intensive hot code to a server, and transmitting results back to the device. The goal of this research was to deliver performance and energy enhancements without hardware modification, allowing existing smartphones and tablets to reap the benefits of this work.