John Kloosterman


I am currently Ph.D. candidate in Computer Science and Engineering at the University of Michigan, advised by Scott Mahlke.


I am a primary instructor for EECS 280 (Programming and Introductory Data Structures) at the University of Michigan (course website:, lecturing twice a week for 220 students and managing a large course staff on a team with three other instructors.

I worked for two years tutoring a student in basic numeracy skills at Siena Literacy Center in Detroit, which was a formative teaching experience for me. I learned how to teach someone whose mind works very differently than mine, and the experience stoked my belief that all students deserve to be taught in the way that works best for them.


My research focuses on how to make GPUs more energy efficient. Examples of projects I've worked on:
  • Memory coalescing: Nearby threads on a GPU tend to access nearby memory. My work (WarpPool) was able to merge more memory requests made by different threads in the same GPU core, saving memory accesses and traffic.
  • Register file design: GPUs need to have hundreds of kilobytes of register file, because so many threads are executing simultaneously. However, not many of these registers are accessed in any given period of time. My work optimizes register placement to save energy.
  • Multi-kernel execution: Multiple kernels running on the same GPU can have complementary resource requirements, meaning that in the best case, running two kernels doubles the throughput. My current work investigates how to get the similar benefits even when the resource demands are not as perfectly matched.


WarpPool: Sharing Requests with Inter-Warp Coalescing for Throughput Processors
John Kloosterman, Jonathan Beaumont, Mick Wollman, Ankit Sethia, Ron Dreslinski, Trevor Mudge, and Scott Mahlke
MICRO 2015


My CV as a PDF