Sandia National Laboratories
Professional Organizations and Committees
- Member, Society for
Industrial and Applied Mathematics.
ACM - Member,
Association of Computing Machinery.
- Trilinos is an effort to develop parallel
algorithms and libraries within an object-oriented software framework
for the solution of large-scale, complex multi-physics engineering and
- A benchmark code intended to eventually serve as an alterative ranking of the TOP 500 systems.
- 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.
Extreme-scale Computer Architecture Design - Future
computing systems are always pushing architecture limits, but this push must be informed
by algorithms and application design concerns. Furthermore, as architectures evolve,
algorithms, libraries and applications must anticipate how to respond to these changes.
The dialogue between system architects and algorithms/applications developers has always
been a strong interest for me.
Programming for emerging manycore and accelerator architectures -
Related to emerging architectures is the issue of how to program them. I have always been interested
in practical solutions in compilers, libraries and languages that can improve the programmability
of high end computers.
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