-
Notifications
You must be signed in to change notification settings - Fork 20
Expand file tree
/
Copy pathintroduction.tex
More file actions
38 lines (18 loc) · 6.36 KB
/
introduction.tex
File metadata and controls
38 lines (18 loc) · 6.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
\todo{MMW: I think it might be worth iterating with Mike Heroux on this introductory session.}
Trilinos is a community-developed, open source software framework that facilitates building large-scale, complex, multiscale, multiphysics engineering and scientific problems. While Trilinos can run on small workstations to large supercomputers, the typical use of Trilinos is on the leadership class systems with new or emerging hardware architectures.
% History
Trilinos was originally conceived as framework of three packages for distributed memory systems. The original Trilinos publication~\cite{Heroux2005a} describes the motivation and the philosophy behind Trilinos and the capabilities that existed in Trilinos at that time. The second Trilinos overview publication~\cite{Heroux2012} introduced the expanded set of capabilities then included in Trilinos as well as the Trilinos strategic goals. Trilinos today is similar to the Trilinos that was envisioned two decades ago in some aspects. However, Trilinos today is also very different in several other aspects. These changes were necessitated by the changes in programming models, application needs, hardware architectures, and algorithms. Trilinos has grown from a library of three packages to a library with more than fifty packages with functionality and features supporting a wide range of applications.
% Purpose
This article is an attempt to capture a snapshot of where Trilinos is today as opposed to eighteen and eleven years ago when the original Trilinos articles were written. We will focus on the major developments within Trilinos in the last decade, new features and functionality that has been added to enable scientific and engineering applications. This article will be an overview of the features and we refer to the extensive reference list for the details of these features. We are also cognizant of the fact that as a software that is actively developed this article could become outdated even before its publication. Hence, we will focus on the high level features and project that we expect to remain stable for several years.
\subsection{Modern Trilinos}
\todo{MMW: I think we should spend some time in this section outlining the motivation for our Kokkos approach, explaining the proliferation of node architectures, the Kokkos revolution, and what this has meant for Trilinos. I think this is worth its own subsection. }
\subsection{Trilinos Functionality}
%Product and package structure
The functionalities in Trilinos are organized in two levels. The first one is \textit{package}. A package in Trilinos has a well-defined set of unique capabilities that is important for a scientific or an engineering application. Packages also have a set of expectations such as having a responsible point of contact or a package lead, software engineering expectations such as documentation, continuous integration testing, clearly defined dependencies, using the Trilinos infrastructure for building and installation etc. The packages are then aggregated into \emph{products} for organizational ease. We curently have these collections: Core, Linear Solvers and Preconditioners, Nonlinear Solvers and Analysis Tools, Discretization Tools, and Framework. These products are collections of packages that share a common objective (e.g., solving a linear system), a sub-community within Trilinos, and in some cases common interfaces. We briefly describe these areas here.
\paragraph{Core} Core packages cover all aspects of creating, distributing or mapping data to processing elements (cores, threads, nodes), load balancing, and redistributing data. They also include Trilinos abstractions for linear algebra data structures and algorithms and concrete implementations such as Tpetra linear algebra data structures. On a modern accelerator-based compute node the abstractions provided by the Kokkos library becomes critical for Tpetra. Section \ref{sec:data_services} describes these features in detail.
\paragraph{Linear Solvers and Preconditioners} The wide variety of applications that use Trilinos need a diverse set of linear solvers. Trilinos has support for both iterative and direct linear solvers. There are a number of preconditioner options from multithreaded or performance portable node-level preconditioners to scalable multilevel domain decomposition or multigrid preconditioners. The preconditioners and solvers use the data abstractions from the core packages. Section \ref{sec:lin_solve} describes these features in detail.
\paragraph{Nonlinear Solvers and Analysis Tools} These packages provide high level algorithms for computational simulation and design. Capabilities include solvers for nonlinear equations, parameter continuation, bifurcation tracking, optimization and uncertainty quantification. This capability area also provides lower level utility packages to evaluate quantities of interest required by the analysis algorithms. Capabilities include automatic differentiation technology to evaluate derivatives and embedded ensemble propagation for uncertainty quantification. Section \ref{sec:nonlin_solve} describes these features in detail.
\paragraph{Discretizations} This collection of packages provides tools for the discretization of differential equations. In particular, it supports mesh-free and mesh-based spatial discretizations, with particular focus on high-order finite elements, and time integration. Discretization tools also include cross-cutting utilities for algorithmic differentiation and for managing directed acyclic graphs of evaluation kernels. Section \ref{sec:discretization} describes these features in detail.
\paragraph{Framework} Framework product is different than the other Trilinos products in that most of the resources and services are not associated with Trilinos packages. The Framework Product rather is focused primarily on activities such as developing and maintaining infrastructure for automated testing and documentation, as well as associated workflows. A small number of infrastructure and cross-cutting packages are also associated with the Framework, including Teuchos and PyTrilinos2. Section \ref{sec:framework} describes these features in detail.
%Article organization
This article describes Trilinos' product areas and their packages with a focus towards providing an overview of recent developments. We also briefly touch upon the Trilinos community (Section \ref{sec:community}) and software engineering issues with respect to Trilinos.