Tpetra parallel linear algebra  Version of the Day
Public Member Functions | List of all members
Tpetra::RTI::KernelOp< S, LO, GO, Node, Kernel > Class Template Referenceabstract

Operator wrapping a Kokkos (Classic) kernel using RTI. More...

#include <Tpetra_RTIOp.hpp>

Inheritance diagram for Tpetra::RTI::KernelOp< S, LO, GO, Node, Kernel >:
Inheritance graph
[legend]

Public Types

Typedefs that give access to the template parameters.
typedef Scalar scalar_type
 The type of the entries of the input and output multivectors. More...
 
typedef LocalOrdinal local_ordinal_type
 The local index type. More...
 
typedef GlobalOrdinal global_ordinal_type
 The global index type. More...
 
typedef Node node_type
 The Kokkos Node type. More...
 

Public Member Functions

 KernelOp (Kernel kernel, const RCP< const Map< LO, GO, Node > > &domainMap, const RCP< const Map< LO, GO, Node > > &rangeMap, const RCP< const Import< LO, GO, Node > > &importer, const RCP< const Export< LO, GO, Node > > &exporter)
 Constructor. More...
 
RCP< const Map< LO, GO, Node > > getDomainMap () const
 The Map associated with the domain of this operator, which must be compatible with X.getMap(). More...
 
RCP< const Map< LO, GO, Node > > getRangeMap () const
 The Map associated with the range of this operator, which must be compatible with Y.getMap(). More...
 
Pure virtual functions to be overridden by subclasses.
virtual void apply (const MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &X, MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &Y, Teuchos::ETransp mode=Teuchos::NO_TRANS, Scalar alpha=Teuchos::ScalarTraits< Scalar >::one(), Scalar beta=Teuchos::ScalarTraits< Scalar >::zero()) const =0
 Computes the operator-multivector application. More...
 
virtual bool hasTransposeApply () const
 Whether this operator supports applying the transpose or conjugate transpose. More...
 

Detailed Description

template<class S, class LO, class GO, class Node, class Kernel>
class Tpetra::RTI::KernelOp< S, LO, GO, Node, Kernel >

Operator wrapping a Kokkos (Classic) kernel using RTI.

This Tpetra::Operator subclass wraps a Kokkos (Classic) kernel using the Tpetra Reduction/Transformation Interface (RTI). The first four template parameters are the same (and in the same order) as those of Tpetra::Operator. The fifth template parameter is the type of the Kokkos (Classic) kernel.

Definition at line 61 of file Tpetra_RTIOp.hpp.

Member Typedef Documentation

◆ scalar_type

template<class Scalar = ::Tpetra::Details::DefaultTypes::scalar_type, class LocalOrdinal = ::Tpetra::Details::DefaultTypes::local_ordinal_type, class GlobalOrdinal = ::Tpetra::Details::DefaultTypes::global_ordinal_type, class Node = ::Tpetra::Details::DefaultTypes::node_type>
typedef Scalar Tpetra::Classes::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::scalar_type
inherited

The type of the entries of the input and output multivectors.

Definition at line 92 of file Tpetra_Operator.hpp.

◆ local_ordinal_type

template<class Scalar = ::Tpetra::Details::DefaultTypes::scalar_type, class LocalOrdinal = ::Tpetra::Details::DefaultTypes::local_ordinal_type, class GlobalOrdinal = ::Tpetra::Details::DefaultTypes::global_ordinal_type, class Node = ::Tpetra::Details::DefaultTypes::node_type>
typedef LocalOrdinal Tpetra::Classes::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::local_ordinal_type
inherited

The local index type.

Definition at line 95 of file Tpetra_Operator.hpp.

◆ global_ordinal_type

template<class Scalar = ::Tpetra::Details::DefaultTypes::scalar_type, class LocalOrdinal = ::Tpetra::Details::DefaultTypes::local_ordinal_type, class GlobalOrdinal = ::Tpetra::Details::DefaultTypes::global_ordinal_type, class Node = ::Tpetra::Details::DefaultTypes::node_type>
typedef GlobalOrdinal Tpetra::Classes::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::global_ordinal_type
inherited

The global index type.

Definition at line 98 of file Tpetra_Operator.hpp.

◆ node_type

template<class Scalar = ::Tpetra::Details::DefaultTypes::scalar_type, class LocalOrdinal = ::Tpetra::Details::DefaultTypes::local_ordinal_type, class GlobalOrdinal = ::Tpetra::Details::DefaultTypes::global_ordinal_type, class Node = ::Tpetra::Details::DefaultTypes::node_type>
typedef Node Tpetra::Classes::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::node_type
inherited

The Kokkos Node type.

Definition at line 101 of file Tpetra_Operator.hpp.

Constructor & Destructor Documentation

◆ KernelOp()

template<class S, class LO, class GO, class Node, class Kernel>
Tpetra::RTI::KernelOp< S, LO, GO, Node, Kernel >::KernelOp ( Kernel  kernel,
const RCP< const Map< LO, GO, Node > > &  domainMap,
const RCP< const Map< LO, GO, Node > > &  rangeMap,
const RCP< const Import< LO, GO, Node > > &  importer,
const RCP< const Export< LO, GO, Node > > &  exporter 
)
inline

Constructor.

Definition at line 71 of file Tpetra_RTIOp.hpp.

Member Function Documentation

◆ getDomainMap()

template<class S, class LO, class GO, class Node, class Kernel>
RCP<const Map<LO,GO,Node> > Tpetra::RTI::KernelOp< S, LO, GO, Node, Kernel >::getDomainMap ( ) const
inlinevirtual

The Map associated with the domain of this operator, which must be compatible with X.getMap().

Implements Tpetra::Classes::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >.

Definition at line 114 of file Tpetra_RTIOp.hpp.

◆ getRangeMap()

template<class S, class LO, class GO, class Node, class Kernel>
RCP<const Map<LO,GO,Node> > Tpetra::RTI::KernelOp< S, LO, GO, Node, Kernel >::getRangeMap ( ) const
inlinevirtual

The Map associated with the range of this operator, which must be compatible with Y.getMap().

Implements Tpetra::Classes::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >.

Definition at line 115 of file Tpetra_RTIOp.hpp.

◆ apply()

template<class Scalar = ::Tpetra::Details::DefaultTypes::scalar_type, class LocalOrdinal = ::Tpetra::Details::DefaultTypes::local_ordinal_type, class GlobalOrdinal = ::Tpetra::Details::DefaultTypes::global_ordinal_type, class Node = ::Tpetra::Details::DefaultTypes::node_type>
virtual void Tpetra::Classes::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::apply ( const MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &  X,
MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &  Y,
Teuchos::ETransp  mode = Teuchos::NO_TRANS,
Scalar  alpha = Teuchos::ScalarTraits< Scalar >::one(),
Scalar  beta = Teuchos::ScalarTraits< Scalar >::zero() 
) const
pure virtualinherited

Computes the operator-multivector application.

Loosely, performs $Y = \alpha \cdot A^{\textrm{mode}} \cdot X + \beta \cdot Y$. However, the details of operation vary according to the values of alpha and beta. Specifically

  • if beta == 0, apply() must overwrite Y, so that any values in Y (including NaNs) are ignored.
  • if alpha == 0, apply() may short-circuit the operator, so that any values in X (including NaNs) are ignored.

Implemented in Tpetra::Classes::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::Classes::CrsMatrix< SC, LO, GO, NT >.

◆ hasTransposeApply()

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node >
bool Tpetra::Classes::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::hasTransposeApply ( ) const
virtualinherited

Whether this operator supports applying the transpose or conjugate transpose.

By default, this returns false. Subclasses must override this method if they can support apply() with mode=Teuchos::TRANS or mode=Teuchos::CONJ_TRANS.

Reimplemented in Tpetra::Classes::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::Classes::CrsMatrix< SC, LO, GO, NT >, Tpetra::CrsMatrixMultiplyOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::Experimental::Classes::BlockCrsMatrix< Scalar, LO, GO, Node >, and Tpetra::details::ApplyOp< Scalar, OperatorType >.

Definition at line 138 of file Tpetra_Operator.hpp.


The documentation for this class was generated from the following file: