Mike Heroux Sandia National Laboratories

Professional Organizations and Committees

  • SIAM - Member, Society for Industrial and Applied Mathematics.

  • ACM - Member, Association of Computing Machinery.

Projects

  • Trilinos - 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 scientific applications.

  • Tramonto - 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.

  • Mantevo - 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 Beowulf project. 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

  • Object-Oriented Programming - 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 integral packages. 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 software.