Skip to content

Commit

Permalink
Reading flow comments.
Browse files Browse the repository at this point in the history
  • Loading branch information
maartenarnst committed Jul 1, 2024
1 parent 2637e47 commit 612da55
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 21 deletions.
19 changes: 9 additions & 10 deletions data_services.tex
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,19 @@

\subsection{Kokkos Kernels}\label{subsec:kk}
Kokkos Kernels~\cite{rajamanickam2021kokkoskernels} is part of the Kokkos ecosystem
~\cite{trott2021kokkos} and provides node local implementations of mathematical kernels
widely used across packages in Trilinos. As a member of the Kokkos
ecosystem, Kokkos Kernels is tightly integrated on Kokkos features and aims at
~\cite{trott2021kokkos} and provides abstractions and implementations of node local mathematical
kernels widely used across packages in Trilinos. As a member of the Kokkos
ecosystem, Kokkos Kernels is tightly integrated with Kokkos features and aims at
delivering performance portable algorithms across major CPU and GPU based HPC systems.
Due to its node local nature, Kokkos Kernels does not rely on MPI or other communication
libraries unlike numerous other packages in Trilinos.
Kokkos Kernels serves as a major point of integration for vendor optimized libraries
such as cuBLAS, cuSPARSE, rocBLAS, rocSPARSE, MKL, ARMpl and others.

The implementation of Kokkos Kernels algorithms leverage the hierarchical parallelism
The implementation of Kokkos Kernels algorithms leverages the hierarchical parallelism
exposed by the Kokkos library~\cite{kim2017designing} and increasingly provides coverage
for stream callable kernels. To ensure flexibility for the distributed libraries that
might call its algorithms, Kokkos Kernels provides thread safe and asynchronous
implementations for most of its kernels. Kokkos Kernels also serves as a major point of
integration for vendor optimized libraries such as cuBLAS, cuSPARSE, rocBLAS, rocSPARSE,
MKL, ARMpl and others.
call its algorithms, Kokkos Kernels provides thread safe and asynchronous
implementations for most of its kernels. Due to its node local nature, Kokkos Kernels does
not rely on MPI or other communication libraries unlike numerous other packages in Trilinos.

The capabilities that Kokkos Kernels provides can be divided in four major categories:
1. BLAS algorithms, 2. sparse linear algebra and preconditioners, 3. graph algorithms, and
Expand Down
20 changes: 10 additions & 10 deletions introduction.tex
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

\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.
Trilinos is a community-developed, open source software framework that facilitates building large-scale, complex, multiscale, multiphysics engineering and scientific simulations. While Trilinos can run on systems ranging from 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.
Trilinos was originally conceived as a 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 functionalities 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.
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 functionalities that have 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 we address a library 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.



Expand All @@ -21,18 +21,18 @@ \subsection{Modern Trilinos}
\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.
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 the following products: 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{Core} Core packages cover all aspects of creating, distributing and 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 modern accelerator-based compute nodes, the abstractions provided by the Kokkos library becomes critical for Tpetra.

\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{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.

\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{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.

\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{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 a 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.

\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.
\paragraph{Framework} The framework product differs from 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.

%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.
The remainder of this article is organized as follows. Sections~\ref{sec:data_services} to \ref{sec:framework}, which are the heart of this article, describe these products and their packages in more detail, with a focus on providing an overview of recent developments. Section \ref{sec:community} briefly touches on the Trilinos community and software engineering issues with respect to Trilinos. Finally, Section~\ref{sec:discussion} provides a discussion and a conclusion.

3 changes: 2 additions & 1 deletion main.tex
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@
%% The abstract is a short summary of the work to be presented in the
%% article.
\begin{abstract}
Trilinos is a community-developed, open source software framework that facilitates building large-scale, complex, multiscale, multiphysics engineering and scientific problems.
Trilinos is a community-developed, open source software framework that facilitates building large-scale, complex, multiscale, multiphysics engineering and scientific simulations.
Since the Trilinos framework has undergone substantial changes to support new applications and new hardware architectures,
this document is an update to ``An Overview of the Trilinos project'' by Heroux et al. (ACM Transactions on Mathematical Software, 31(3):397–423, 2005).
It describes the design of Trilinos, introduces its new organization in product areas,
Expand Down Expand Up @@ -314,6 +314,7 @@ \section{Trilinos Community}


\section{Discussion}
\label{sec:discussion}


\section{Acknowledgment}
Expand Down

0 comments on commit 612da55

Please sign in to comment.