The Trilinos Project is an effort to facilitate the design, development, integration and ongoing support of mathematical software libraries within an object-oriented framework for the solution of large-scale, complex multi-physics engineering and scientific problems. Trilinos addresses two fundamental issues of developing software for these problems: (i) Providing a streamlined process and set of tools for development of new algorithmic implementations and (ii) promoting interoperability of independently developed software.
Trilinos uses a two-level software structure designed around collections of packages. A Trilinos package is an integral unit usually developed by a small team of experts in a particular algorithms area such as algebraic preconditioners, nonlinear solvers, etc. Packages exist underneath the Trilinos top level, which provides a common look-and-feel, including configuration, documentation, licensing, and bug-tracking.
Here we present the aspects of Trilinos that relate to performance. While there are several different aspects of performance addressed in Trilinos, this presentation will focus on the interaction between performance and the design of general and flexible object-oriented interfaces. A set of interfaces that are not carefully designed will result in undue constraints on possible implementations and result in sub par performance. Specifically, we will focus on the design of the Thyra operator/vector interfaces and on the design of the multi-vector interface.