John Kloosterman

About Me

I am a Lecturer in Computer Science and Engineering at the University of Michigan.
Recently I have been teaching EECS 183, an introductory
computer science course for both those students who intend to major in computer science and those
looking to integrate computer science skills into their other interests.

Press

Research

Autonomous vehicle security:
Autonomous vehicle software, such as Apollo,
is implemented as a distributed system, with multiple modules communicating using
message passing. I am creating tools that can automatically identify vulnerabilities
in the ways these modules interact, which developers can use to secure these critical systems.

GPU multi-kernel execution:
When multiple kernels are run at the same time on the same GPU, they can often acheive
higher throughput than when they are run consecutively, because there are times they
have complementary resource requirements. During other times, they can interfere. My
work finds resource paritions that limit the impact of interference.

GPU 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.
RegLess (published MICRO 2017) is a
technique to save energy using a much smaller register structure that
stores only active registers.

GPU memory coalescing:
Nearby threads on a GPU tend to access nearby locations in memory, allowing
requests to the same cache lines to be merged to increase memory throughput.
WarpPool (published MICRO 2015)
used a new type of memory locality between loads made by different thread groups
to merge more requests.