My interests are in high performance scientific computing, with
particular emphasis on parallel computing. My major projects involve
developing the message passing inteface (MPI) and hierarchical
numerical methods for the numerical solution of partial differential
A list of undergraduate research projects is
available; contact me if you are interested.
One of the biggest challenges in parallel computing for scientific
computing is efficiently and correctly expressing parallel programs.
My work in this area has three main directions:
Each of these is described in more detail below.
- Developing standards for parallel computing that can be
efficiently and widely implemented. This work has focused on the
Message Passing Interface (MPI) standard and a freely-available
implementation of the MPI standard, MPICH.
- Developing tools to understand and improve the performance and
correctness of parallel programs.
- Innovative methods for parallelism that will match radical
changes in computer architecture.
will be an Petascale computing system, funded by that National Science
Foundation and installed at NCSA. Along with Marc Snir, I am
providing software strategy, oversight, and direction.
Consortium for Petascale Computation is a collaboration on
software, applications, and technologies for petascale computing that
is associated with the Blue Waters project.
BlueGene is computer developed by IBM that provides great
computational power in a small package; a single rack provides a peak
performance of 5.6 TFlops. Argonne National Laboratory has installed
a single rack
BG/L system and is installing a much larger, second-generation, BG/P system.
I was involved with the project to acquire both the BG/L and later
BG/P systems, with an emphasis on software, performance modeling, and
Argonne has also organized a
for those interested in working with this architecture.
The Message Passing Interface (MPI) is a standard for parallel
computing developed by the high performance computing community. The
standard is available at the MPI
Forum web site. I was involved in the development of both the
MPI-1 and MPI-2 standards, and I currently maintain the discussion web
site for the clarifications to the MPI-2 standard.
For a standard to succeed, there must be an effective implementation
of the standard. For this reason, our group developed a portable,
efficient implementation of the MPI standard called MPICH.
Along with my collaborators at Argonne, I
continue to use this project to perform research into implementation
issues for MPI, such as how to make best use of emerging
ROMIO is an implementation
of the MPI-IO part of the MPI-2 standard.
Performance Visualization and Tuning
Jumpshot is a Java-based
program that provides a graphical representation of timelines
representing the state of a parallel (multiprocess, multithreaded, or
both) program. Jumpshot reads log files that can be created with the
MPE tools provided with the MPICH implementation of MPI.
FPMPI is a tool for collecting
data on the performance
of MPI programs. FPMPI collects detailed summary data about MPI
usage, along with some information about the other resources used by a
parallel program. FPMPI tries to collect just the right amount of
data: rather than collect information either on each separate call
(too much data) or combining all calls to a particular routine (too
little data), FPMPI collects enough data to understand the overall
communication pattern, including the different contributions by short
and long message communication. FPMPI complements the abilities of
PETSc is a suite of data
structures and routines for the scalable (parallel) solution of
scientific applications modeled by partial differential equations.
Other projects and links are described
here. These include tools for managing and automating documentation
and information on my prefered laptop setup.
Open projects describes some projects
that I am interested in pursuing.