The Wayback Machine - https://web.archive.org/web/20071027130116/http://graphics.stanford.edu:80/~mhouston/
Mike Houston

Mike Houston

Contact Info
Email: mhouston at stanford.edu
Office: Gates 381
Phone: 650-723-0618
Calendar
I graduated from Rio Americano High School in 1997 and then moved on to receive my BS in Computer Science with honors from the University of California, San Diego (UCSD) in 2001. During my time at UCSD, I worked at the San Diego Supercomputer Center in the Visualization Group. I came to the Stanford University Computer Science department in the fall of 2001 and began pursuing my MS. I recieved my MS in 2003 and I have since transitioned to the PhD program. I've completed my Comps and Quals, so I'm now in thesis mode. My time at Stanford has been spent in the Stanford Graphics Lab under the advisement of Pat Hanrahan. My research for 2006 and 2007 has been supported by an Intel PhD Fellowship.

Research Projects

Sequoia

Sequoia is a programming language designed to facilitate the development of memory hierarchy aware parallel programs that remain portable across modern machines with different memory hierarchy configurations. Sequoia abstractly exposes hierarchical memory in the programming model and provides language mechanisms to describe communication vertically through the machine and to localize computation to particular memory locations within the machine. We have implemented a complete programming system, including a compiler and runtime systems for Cell processor-based blade systems and distributed memory clusters, and have demonstrated efficient performance running Sequoia programs on both of these platforms.

Folding@Home - GPGPU

I've been lucky enough to help the Folding@Home folks get the first GPU based client out. This has been a long time coming and I'm glad they had the patience to keep at it and keep working with Brook and GPGPU programming. I especially want to thank Vishal for the hard work adapting algorithms to get the code running well. I also want to thank ATI for all the support getting things up and running. The current estimate is that a R580 is 20-40X a single core 2.8GHz Pentium4. At these rates, we can now do in close to a month what used to take years of simulation. See current stats here.

BrookGPU

BrookGPU is a compiler and runtime implementation of the Brook stream programming language which provides an easy, C-like programming environment for today's GPU. As the programmability and performance of modern GPUs continues to increase, many researchers are looking to graphics hardware to solve problems previously performed on general purpose CPUs. In many cases, performing general purpose computation on graphics hardware can provide a significant advantage over implementations on traditional CPUs.

GPUBench

GPUBench is a benchmark suite designed to analyze the performance of programmable graphics processors in areas of particular importance to general purpose computation. More so than being a measuring stick for GPU performance, GPUBench is intended to be a tool for developers of GPU-accelerated applications, since a more complete understanding of machine capabilities will dictate better software design decisions. Information included in GPUBench reports is useful in accurately estimating the performance of shader programs as well as determining if a particular GPU is a viable target platform for a particular computation.

Chromium

Chromium is a system for interactive rendering on clusters of workstations. It is a completely extensible architecture, so that parallel rendering algorithms can be implemented on clusters with ease. Various parallel rendering techniques such as sort-first and sort-last may be implemented with Chromium. Furthermore, Chromium allows filtering and manipulation of OpenGL command streams for non-invasive rendering algorithms. Chromium runs on Microsoft Windows and several types of Unix such as Linux and IRIX.

Graphics Clusters

I've spent a great deal of time researching, developing, and building graphics clusters. This link provides up to date information on our latest graphics cluster, SPIRE. There is also information available about our previous generation cluster, Chromium. I've also given many talks on building graphics clusters.

Raptor

Raptor is a parallel volume renderer written for use with Chromium. Raptor provides an example of a sort-last parallel application utilizing Chromium's distributed event model, CRUT, and compositing systems, such as the binaryswap SPU.

NPACI Vistools

While at SDSC, I worked on the NPACI VisTools. NPACI's VisTools are a collection of software libraries and applications that allow users to create high resolution visualizations of large complex scientific data. Current applications let users interactively navigate large volumes on their desktop and do full color perspective volume rendering. The toolkits are designed to work with data sets that are too large to fit in memory using out-of-core techniques.

Publications

N-Body Simulations on GPUs

Erich Elsen, V. Vishal, Mike Houston, Vijay Pande, Pat Hanrahan, Eric Darve

Tech Report - arXiv:0706.3060

Interactive k-D Tree GPU Raytracing

Daniel Horn, Jeremy Sugerman, Mike Houston, and Pat Hanrahan

I3D 2007

Compilation for Explicitly Managed Memory Hierarchies

Timothy Knight, Ji-Young Park, Manman Ren, Mike Houston, Mattan Erez, Kayvon Fatahalian, Alex Aiken, Bill Dally, and Pat Hanrahan

PPoPP 2007

Sequoia: Programming The Memory Hierarchy

Kayvon Fatahalian, Timothy Knight, Mike Houston, Mattan Erez, Daniel Horn, Lark-Hoon Leem, Ji-Young Park, Manman Ren, Alex Aiken, Bill Dally, and Pat Hanrahan

Supercomputing 2006

ClawHMMer: A Streaming HMMer-Search Implementation

Daniel Horn, Mike Houston, and Pat Hanrahan

Supercomputing 2005

A Hardware F-Buffer Implementation

Mike Houston, Arcot Preetham and Mark Segal

Technical Report - CSTR 2005-05

Efficient Partitioning of Fragment Shaders for Multiple-Output Hardware

Tim Foley, Mike Houston, and Pat Hanrahan

Graphics Hardware 2004

Visualizing Dynamic Architectural Environments

Mike Houston, Chris Niederauer, Maneesh Agrawala, Greg Humphreys

Communications of the ACM, August 2004

Brook for GPUs: Stream Computing on Graphics Hardware

Ian Buck, Tim Foley, Daniel Horn, Jeremy Sugerman, Kayvon Fatahalian, Mike Houston, and Pat Hanrahan

SIGGRAPH 2004

Interactively Guided Volumetric Segmentation Using Programmable Graphics Hardware

Anthony Sherbondy, Mike Houston, and Sandy Napel

Radiological Society of North America 89th Scientific Sessions, November 2003

Fast Volume Segmentation With Simultaneous Visualization Using Programmable Graphics Hardware

Anthony Sherbondy, Mike Houston, and Sandy Napel

IEEE Visualization 2003

Non-Invasive Interactive Visualization of Dynamic Architectural Environments

Christopher Niederauer, Mike Houston, Maneesh Agrawala, and Greg Humphreys

ACM SIGGRAPH 2003 Symposium on Interactive 3D Graphics

Chromium: A Stream Processing Framework for Interactive Rendering on Clusters

Greg Humphreys, Mike Houston, Yi-Ren Ng, Randall Frank, Sean Ahern, Peter Kirchner, and James T. Klosowski

SIGGRAPH 2002

Courses

GPGPU: General-Purpose Computation on Graphics Hardware

Organizer/Presenter

SIGGRAPH 2007

CS448 - Real-Time Graphics Architectures

Teaching Assistant

Stanford, Spring Quarter 2007

GPGPU: General-Purpose Computation on Graphics Hardware

Presenter

Supercomputing 2006

CS315a - Parallel Architecture and Programming

Teaching Assistant

Stanford, Spring Quarter 2006

CS240 - Advanced Topics in Operating Systems

Teaching Assistant

Stanford, Winter Quarter 2005

Workshops

Workshop on Parallel Visualization and Graphics 2003

IEEE Visualization 2003

Workshop on Parallel Visualization Architectures and Chromium 2004

IEEE Visualization 2004

Public Talks

Advanced Programming (GPGPU)

Stanford CS448: Real-Time Graphics Architectures (2007)

General Purpose Computation on Graphics Processors (GPGPU)

ATI HD 2000 Series Launch, Tunis, Tunisia (2007)

High-Level GPGPU Languages

IEEE Supercomputing 2006

Understanding GPUs Through Benchmarking

IEEE Supercomputing 2006

GPGPU Cluster Computing

IEEE Supercomputing 2006

Sequoia: Programming the Memory Hierarchy

ORNL/Summit on Sofware and Algoritms for the Cell Processor (2006)

ATI X1k Series

UC Davis EEC 277 (Graphics Architecture) (2006)

General Purpose Computation on Graphics Processors (GPGPU)

ATI X1000 Series Launch, Ibiza, Spain (2005)

Designing Graphics Clusters

IEEE Visualization 2004 - Parallel Visualization Workshop

Class Projects

Aperture Based High Dynamic Range Imaging

CS448 - Digital Photography

Realistic Indoor Daylight Illumination

CS348B - Computer Graphics: Image Synthesis Techniques