Michael E. Bauer

Stanford University
mebauer (at) cs (dot) stanford (dot) edu
Gates 416
353 Serra Mall
Stanford, CA 94305


Recent Bio

In the fall of 2014 I will be starting work as a Research Scientist at NVIDIA Research.

I am a sixth year Ph.D. candidate in the Department of Computer Science at Stanford University. I received my Masters in Computer Science in 2011 from Stanford. I graduated Magna Cum Laude from Duke University in 2008 with a triple major in Electrical Computer Engineering (with honors), Mathematics (with high honors), and Computer Science, but still miss Duke Basketball (see above).

My research advisor is Alex Aiken. I currently work on developing locality-aware parallel programming models as well as the languages and runtimes that support them. The current project that I am invovled in is called Legion. In the past I've worked on another locality-aware programming model called Sequoia. I'm also the primary developer of the CudaDMA library for improving both the performance and programmability of GPU kernels that use shared memory.

I received NVIDIA Graduate Fellowships in 2010 and 2011 and interned at NVIDIA Research in the summer of 2010. I'm also a member of the Stanford Pervasive Parallelism Lab.

Although my research consumes a large chunk of my time, I also enjoy participating in other activities. I enjoy running competitively and playing pick-up basketball games as often as possible. I'm always up for a good chess match.

Research Interests

My primary research is in the design of parallel programming models and languages. I'm particularly interested in the design of higher-level languages that are capable of targeting deep memory hierarchy machines. While at Stanford I initially worked on developing the Sequoia programming language. Recently I've been designing a new programming model that is a generalizaiton of the Sequoia model called Legion. See my publications page for more details.

In addition to working on higher level languages like Sequoia, I also have extensive experience targeting P-threads, OpenMP, MPI, and CUDA. These low-level libraries and languages play a vital role in the implementation of parallel runtimes. As a result my research also extends to the design of new low-level APIs and interfaces to hardware that would enable more efficient parallel programming and provide better targets for higher-level compilers and runtimes.

Due to my passion for GPUs, I've also become interested in the design and implementation of graphics APIs like OpenGL and DirectX. For CS 248 I worked with Ted Jiang to build a real-time rendered game called Flashpoint that required two GPUs, one for a custom multi-physics engine that I implemented in CUDA and a second for rendering the results using OpenGL.

Prior to graduate school my research focus was primarily on computer architecture. I worked on both comprehensive error detection in hardware as well as process variability tolerant architectures. A summary of my undergraduate research projects can be found here.

Teaching Experience

While at Stanford I have helped develop a new undergraduate course in parallel programming CS149. I was a TA for this class in winter quarter 2010 (the first time it was offered) as well as winter quarter 2011. I've helped develop all the programming assignments for this class including ones involving:
  • Java Threads
  • Software Transactional Memory
  • Hadoop
  • CUDA
  • Sequoia
In addition to being a TA in graduate school, I also served as an undergraduate TA for several electrical engineering classes at Duke.

Other Cool Links

Recent Race Results
World Wide Computer Architecture
(You'll find it anyway)
My undergraduate website

Mike Bauer
Last modified: Wed July 30 22:42:46 PDT 2014