]> https://gitweb.dealii.org/ - release-papers.git/commitdiff
Improve Tpetra section
authorDaniel Arndt <arndtd@ornl.gov>
Thu, 19 Sep 2024 13:46:02 +0000 (09:46 -0400)
committerDaniel Arndt <arndtd@ornl.gov>
Thu, 19 Sep 2024 13:46:02 +0000 (09:46 -0400)
9.6/paper.tex

index e02f01805685d2e447e1c908fe133758fad8b997..eb6230d3dde5ef8b3853f2ad93119a3473db363b 100644 (file)
@@ -427,23 +427,11 @@ in the context of an application to acoustic conservation equations~\cite{heinz2
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \subsection{Interface to the \trilinos{} \tpetra stack}\label{sec:tpetra}
 
-\dealii{}'s parallel linear algebra facilities are largely built on
+\dealii{}'s parallel linear algebra facilities (apart from matrix-free capabilities) are largely built on
 wrappers around functionality provided by the \petsc{} and \trilinos{} libraries.
-As a software project, \trilinos{} is designed as a stack of semi-independent
-packages building upon each other and working together. 
-As a foundation, \teuchos{} offers a set of basic tools,
-including parameter handling through XML files or command line interfaces 
-and the reference counted pointer \texttt{RCP} which predates 
-the smart pointer types introduced in \texttt{C++11}.
-The second layer in the stack is a package providing distributed linear algebra 
-classes for vectors and (sparse) matrices based on the \petra{}
-object model. The third layer is a set of interconnected packages
-providing preconditioners, various types of solvers 
-as well as more advanced techniques like automatic differentiation, 
-time integration and discretization.
-
-Historically, \trilinos{} has implemented \petra{} objects -- such as
-parallel vector, sparsity pattern, and sparse matrix classes -- in its
+
+Historically, \trilinos{} has implemented distributed linear algebra 
+-classes for vectors and (sparse) matrices in its
 \epetra{} package that uses \MPI{} as its only source of
 parallelism. The \dealii{} interfaces to \trilinos{} have therefore traditionally all
 been built using \epetra{}.
@@ -457,23 +445,23 @@ eventually have to switch all of our \trilinos{} interfaces to
 sub-packages replacing existing \trilinos sub-packages (for example,
 Ifpack2 instead of Ifpack).
 
-In the current release, we have put substantial work into this switch.
-
-\todo[inline]{Sebastian \& Jan Philipp: Please complete}
-
-
+In the current release, we have put substantial work into this switch. The following omits the \texttt{LinearAlgebra} prefix for readability.
 \begin{itemize}
-  \item Short overview capabilities of \epetra (MPI parallel, fixed types) [Thiele]
-  \item Short overview capabilities of \tpetra (MPI+X via Kokkos, auto diff types, Templated petra) [Thiele]
-    \todo[inline]{Keep discussion of the two items above as short as
-      you can -- we're describing the changes in deal.II, not some
-      other package. Perhaps roll what you want to say into the
-      paragraphs above?}
-  \item Current state of the interface (Tpetra based linear algebra, direct solver from Amesos2, preconditioners from Ifpack2) [Thiele \& Kinnewig]
-  \item User relevant changes from \epetra: incompatibilities, removed
-    options, changes in the constructor. [Thiele \& Kinnewig]
-    \todo[inline]{These last two items are the important ones.}
+  \item The \texttt{TpetraWrappers::Vector} class has been overhauled to also allow specifying
+    a memory space, and the \texttt{TpetraWrappers::BlockVector} class has been added.
+  \item \texttt{TpetraWrappers::SparseMatrix} and \texttt{TpetraWrappers::SparsityPattern} has been implemented mirroring
+    the functionality of the \texttt{TrilinosWrappers::SparseMatrix} \\ and \texttt{TrilinosWrappers::SparsityPattern} classes.
+  \item Various \texttt{TpetraWrappers::Precondition*} have been added largely
+    mirroring the exising preconditioners in the \texttt{LinearAlgbera::TrilinosWrappers} namespace.
+  \item \texttt{TpetraWrappers::SolverDirect} and \texttt{TpetraWrappers::SolverDirectKLU2}
+    have been implemented as direct solvers.
 \end{itemize}
+Most of the interfaces are usable at this point even if some functionality existing in the \texttt{TrilinosWrappers} classes
+is still missing, most noticably a wrapper for an algebraic-multigrid preconditioner.
+
+All the \texttt{TpetraWrappers} classes take \texttt{Number} and \texttt{MemorySpace} template arguments
+allowing to control the underlying number type and the memory space used for storing the data. Note that the memory space type
+also determines whether \tpetra{} takes advantage of GPUs if \texttt{Kokkos} has been configure with a GPU backend.
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \subsection{More support for advanced programming idioms}\label{sec:tools}

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.