From: Daniel Arndt Date: Thu, 19 Sep 2024 13:46:02 +0000 (-0400) Subject: Improve Tpetra section X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e645f7842a5d830e907f01a95f7e9ceb629befe2;p=release-papers.git Improve Tpetra section --- diff --git a/9.6/paper.tex b/9.6/paper.tex index e02f018..eb6230d 100644 --- a/9.6/paper.tex +++ b/9.6/paper.tex @@ -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}