Matthew Bolitho, Ph.D.
Biography
Matthew is an architect at NVIDIA with a primary focus on GPU Computing. He leads the Compute Application Performance Group.
Previously, he was a PhD Candidate in the Department of Computer Science at The Johns Hopkins University in Baltimore, MD, USA. His PhD work focused on the construction and processing and visualization of extremely large geometric datasets.
During 2007, Matthew was a visiting Engineer at the NASA Goddard Space Flight Center in Greenbelt, MD. During the summer of 2008, he was an Architect at NVIDIA Corporation in Santa Clara, CA. Prior to joining the Computer Graphics Lab at JHU, Matthew was a Software Engineer at Beca, Australasia's largest engineering consultancy firm. He recieved his undergraduate education at the The University of Auckland.
Research
Parallel Poisson Surface Reconstruction
Matthew Bolitho, Michael Kazhdan, Randal Burns and Hugues Hoppe, International Symposium on Visual Computing (2009)
In this work we describe a parallel implementation of the Poisson Surface Reconstruction algorithm based on multigrid domain
decomposition. We compare implementations using di.erent models of data-sharing between processors and show that a parallel implementation
with distributed memory provides the best scalability. Using our method, we are able to parallelize the reconstruction of models from one billion
data points on twelve processors across three machines, providing a nine-fold speedup in running time without sacrificing reconstruction accuracy.
[More Information]
[PDF]
Multilevel Streaming for Out-of-Core Surface Reconstruction
Matthew Bolitho, Michael Kazhdan, Randal Burns and Hugues Hoppe, Eurographics Symposium on Geometry Processing (2007)
Reconstruction of surfaces from huge collections of scanned points often requires out-of-core techniques, and most such techniques involve
local computations that are not resilient to data errors. We show that a Poisson-based reconstruction scheme, which considers all points in a
global analysis, can be performed efficiently in limited memory using a streaming framework. Specifically, we introduce a multilevel streaming
representation, which enables efficient traversal of a sparse octree by concurrently advancing through multiple streams, one per octree level.
Remarkably, for our reconstruction application, a sufficiently accurate solution to the global linear system is obtained using a single
iteration of cascadic multigrid, which can be evaluated within a single multi-stream pass. We demonstrate scalable performance on several
large datasets.
[More Information]
[PDF]
[Talk]
[Source Code]
Poisson Surface Reconstruction
Michael Kazhdan, Matthew Bolitho and Hugues Hoppe. Eurographics Symposium on Geometry Processing (2006)
We show that surface reconstruction from oriented points can be cast as a spatial Poisson problem. This Poisson formulation considers all the
points at once, without resorting to heuristic spatial partitioning or blending, and is therefore highly resilient to data noise. Unlike radial
basis function schemes, our Poisson approach allows a hierarchy of locally supported basis functions, and therefore the solution reduces to a
well conditioned sparse linear system. We describe a spatially adaptive multiscale algorithm whose time and space complexities are proportional
to the size of the reconstructed model. Experimenting with publicly available scan data, we demonstrate reconstruction of surfaces with greater
detail than previously achievable.
[More Information]
[PDF]
[Talk]
[Source Code]
A Relational Debugging Engine for the Graphics Pipeline
Nathaniel Duca, Krzysztof Niski, Jonathan Bilodeau, Matthew Bolitho, Yuan Chen and Jonathan Cohen. ACM Transactions on Graphics (Proceedings of SIGGRAPH 2005)
We present a new, unifed approach to debugging graphics software. We propose a representation of all graphics state over the course of program
execution as a relational database, and produce a query-based framework for extracting, manipulating, and visualizing data from all stages of
the graphics pipeline. Using an SQL-based query language, the programmer can establish functional relationships among all the data, linking
OpenGL state to primitives to vertices to fragments to pixels. Based on the Chromium library, our approach requires no modifcation to or
recompilation of the program to be debugged, and forms a superset of many existing techniques for debugging graphics software.
[More Information]
[PDF]
[MOV]
Teaching
EN600.320/420 - Parallel Programming
Fall 2008. Co-taught with Prof. Randal Burns.
This course prepares the programmer to tackle the massive data sets and huge problem size of modern scientific and enterprise computing.
The course will examine different forms of parallelism in four sections. These are: (1) massive data-parallel computations with Hadoop;
(2) programming compute clusters with MPI; (3) thread-level parallelism in Java; and, (4) GPGPU parallel programming with NVIDIA's CUDA framework.
[Class Website]
EN600.407 - General Purpose Computation on the GPU
Spring 2008.
Programmable graphics hardware not only provides a way to perform advanced real-time 3D rendering, but also a platform for highly parallel
numerical computing. Over the past 5 years, the General Purpose Graphics Processor Unit (GPGPU) community has grown around performing non-graphics
computations using the limited instruction set and framework of the graphics pipeline. This short course, which meets one hour per week for
the Spring 2008 semester, will introduce students to GPGPU computing using NVIDIA's CUDA platform.
[Class Website]
EN600.357/457 - Computer Graphics
Spring 2005, Spring 2006, Spring 2007. Teaching Assistant for Prof. Michael Kazhdan.
An introduction to computer graphics techniques and applications, including image processing, rendering, modeling and animation.
EN600.321/421 - Object Oriented Software Engineering
Fall 2004, Fall 2005, Fall 2006. Teaching Assistant for Prof. Scott Smith.
A practically oriented course introducing object-oriented software construction methodologies and their application. The Course topics covered
include object-oriented analysis and design, UML, design patterns, refactoring, program testing, code repositories, team programming, and code reviews.