Professional Organizations and Committees
- Member, Society for
Industrial and Applied Mathematics.
ACM - Member,
Association of Computing Machinery.
- Trilinos is an effort to develop parallel solver
algorithms and libraries within an object-oriented software framework
for the solution of large-scale, complex multi-physics engineering and
- An application for modeling inhomogeneous fluids using molecular theories.
The methods embodied in this effort can address a variety of critical problems,
especially as multiscale modeling and simulation become more important.
- A project focused on HPC application performance analysis, prediction and improvement with a
special interest in the development of tools and portable software for computer systems analysts and designers
who are developing next-generation computer systems and related software. An additional focus is
establishing a feedback loop to application developers so that their applications can improve in
design and implementation.
High Performance Computing
Unstructured Parallel Sparse Matrix Computations
- The most common theme of my professional career has been this area.
I have a strong interest in all aspects of this topic, especially parallel
preconditioned iterative methods, floating point issues for large-scale computations,
parallel partitioning tools, application programmer interfaces and object-oriented
techniques. My efforts on the BLAS Technical Forum, the Equation Solver
Interface Forum, the Cray SITRSOL library, Aztec and now the Trilinos Project
are all focused in this area.
PC Clusters - Clusters of PCs are a powerful,
cost-effective way of providing low-end (and high-end using special purpose networks)
high-performance computing capabilities
to all types of applications users. The ability to connect multiple
systems using commodity off-the-shelf (COTS) components become easier
and cheaper with each passing day. A good example of this is the
I have built 7 Beowulf clusters of various sizes.
Programming for emerging multicore architectures - Even
though SMP nodes are common, new homogeneous multicore architectures (Intel/AMD/Clearspeed, etc),
and heterogenous architectures, e.g., Cell, are changing the landscape in important ways.
At the same time, programming tools for
these systems are not well-understood. The lowest common denominator for
this class of system is to run MPI across nodes and within the nodes.
However, this approach requires a node-architecture-aware MPI implementation.
Furthermore, if there are algorithmic ways to take advance of the shared memory
within a multicore node, then performance can improve by using a shared memory
programming model within the node and MPI across nodes.
Software Engineering for Scientific Computing
- An important feature of most Trilinos packages is their object-oriented
design. Most of the package are written in C++ and make use of the OO features
of the language, including class structures and abstract interfaces. Trilinos
packages under current development also make extensive use of templates and the
Standard Template Library. Beyond the general merits of OO programming,
to date the most important benefit of using OO
techniques has been the ability keep user interfaces relatively stable while
continuing to improve the implementation of our software. Many of the
interfaces for Epetra, one of the most mature Trilinos packages, have not
change since the early days of the project, even though very substantial
improvements have been made to the implementation.
Trilinos Package Design - One of
most important features of Trilinos is its two-level design, built around
Each Trilinos package is an independent collection of software
with its own self-contained directory structure, build process, documentation,
web site, etc. At the Trilinos level, those things that are common to all
packages are provided, but in a way that does not force a package to be dependent
on Trilinos. Each package can be extracted from Trilinos at a single directory
point (Trilinos/packages/package_name) and then built independently from
the rest of Trilinos as long as explicit package dependencies (if any) are satisfied.
Software Quality Assurance and Engineering (SQA/SQE) -
Advanced Scientific Computing (ASC) efforts, a major funding source for the
development of Trilinos, has strong SQA/SQE requirements. Historically, in my
opinion, mathematical software developers have not had a strong emphasis on
software engineering practices. This does not mean that code was poorly written.
On the contrary, there are numerous well-written packages, but most do not
have rigourous, documented, repeatable processes for producing software. Many
do not even have a repository or issue tracking software for maintaining the
integrity of the software base. One of the main contributions that Trilinos
provides to packages is a ready-made infrastructure for support SQA/SQE processes.
Much of my work has focused on establishing these practices and developing
tools and policies that are practical and attractive to developers of mathematical