For many computer users, a graphics processing unit (GPU) is simply a device that allows them to play the latest 3D games. Under the hood, GPUs are massively parallel processors that provide an order of magnitude higher peak throughput and memory bandwidth than CPUs. In the past few years, computer scientists have become interested in harnessing this enormous computational power for more general-purpose applications. Originally this required mapping non-graphics applications onto graphics-specific APIs, but recent software advances have greatly simplified this process and have made GPU programming accessible to a wide range of programmers.
In this talk, I will give an overview of GPU architectures and discuss their advantages and disadvantages relative to CPU architectures. I will also describe one of the most popular approaches for programming general-purpose GPU applications, NVIDIA's CUDA programming model. Finally, I will discuss some of my own work in this area: prior work on using GPUs to accelerate a video processing application and current work on allowing the CPU and GPU to collaboratively execute an application.
Bio: Michael Boyer is a Ph.D. candidate in Computer Engineering at the University of Virginia. His research focuses on the design of emerging multi- and many-core architectures and software techniques for effectively utilizing such architectures. He earned his B.S. in Computer Engineering from Union College in 2006.