Skip to content

Commit

Permalink
Fix typos and add missing words
Browse files Browse the repository at this point in the history
  • Loading branch information
mayrmt committed Apr 12, 2023
1 parent 15e5f82 commit 1dadb86
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 19 deletions.
10 changes: 5 additions & 5 deletions data_services.tex
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,23 @@

\subsection{Kokkos Kernels}\label{subsec:kk}
Kokkos Kernels~\cite{rajamanickam2021kokkoskernels} is part of the Kokkos ecosystem
~\cite{trott2021kokkos} and provides node local implementations of mathematic kernels
~\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
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
library unlike numerous other packages in Trilinos.
libraries unlike numerous other packages in Trilinos.

The implementation of Kokkos Kernels algorithms leverage 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 its kernels. Kokkos Kernels also serves as a major point of
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.

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
1. BLAS algorithms, 2. sparse linear algebra and preconditioners, 3. graph algorithms, and
4. batched dense and sparse linear algebra~\cite{liegeois2023performance}. The main
points of integration of Kokkos Kernels in Trilinos are Tpetra for the dense and sparse
linear algebra capabilities, Ifpack2 for the preconditioners and batched algorithms,
Expand All @@ -30,6 +30,6 @@ \subsection{Kokkos Kernels}\label{subsec:kk}

Similarly to the Kokkos library, Kokkos Kernels is developed in its own GitHub
repository\footnote{https://github.com/kokkos/kokkos-kernels} outside of the Trilinos
github repository. Every version of the library is integrated and tested in Trilinos
GitHub repository. Every version of the library is integrated and tested in Trilinos
as part of the Kokkos ecosystem release process. Additional information on Kokkos
Kernels capabilities can be found here~\cite{deveci2018multithreaded,wolf2017fast}.
11 changes: 6 additions & 5 deletions introduction.tex
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,25 @@
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. 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 wide range of applications.
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. 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 years ago when the original Trilinos article was 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. We would 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 years ago when the original Trilinos article was 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.

%Product and package structure
The functionalities in Trilinos are organized in two levels. The first one is \textit{package}. A packaage 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, using the Trilinos infrastructure for building and installation etc. Recently, we have aggregated the fifty or more packages into five \textit{product areas} for organizational ease. The five product areas are data services, discretizations, linear solvers, embedded nonlinear analysis and tools, and framework. These product areas are collection of packages that share 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. Recently, we have aggregated the fifty or more packages into five \textit{product areas} for organizational ease. The five product areas are data services, discretizations, linear solvers, embedded nonlinear analysis and tools, and framework. These product areas are collection 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{Data Services} The data services product area covers all aspects of creating, distributing or mapping data to processing elements (cores, threads, nodes), load balancing, and redistributing data. Data services also includes Trilinos abstractions for data such as the Petra object model, and its concrete implementation called Tpetra. 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{Discretization} \todo{Mauro} ....... Section \ref{sec:discretization} describes these features in detail.


\paragraph{Linear Solvers} 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 multillevel domain decomposition or multigrid preconditioners. The preconditioners and solvers use the data abstractions from the data services product area. Section \ref{sec:lin_solve} describes these features in detail.
\paragraph{Linear Solvers} 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 data services product area. Section \ref{sec:lin_solve} describes these features in detail.

\paragraph{Embedded Nonlinear Analysis Tools} The nonlinear analysis product area provides high level algorithms for computational simulation and design. Capabilities include solvers for nonlinear equations, time integration, 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 evalaute derivatives and embedded ensemble propagation for uncertainty quantification. Section \ref{sec:nonlin_solve} describes these features in detail.

\paragraph{Framework} \todo{Jim/Curt} ....... Section \ref{sec:framework} describes these features in detail.

%Article organization
This article describes these product areas, and packages in Trilinos 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.
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.

Loading

0 comments on commit 1dadb86

Please sign in to comment.