Tpetra parallel linear algebra  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Public Member Functions | List of all members
Tpetra::RTI::KernelOp< S, LO, GO, Node, Kernel > Class Template Reference

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 S scalar_type
 The type of the entries of the input and output multivectors. More...
 
typedef LO local_ordinal_type
 The local index type. More...
 
typedef GO 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...
 
void apply (const MultiVector< S, LO, GO, Node > &X, MultiVector< S, LO, GO, Node > &Y, Teuchos::ETransp mode=Teuchos::NO_TRANS, S alpha=Teuchos::ScalarTraits< S >::one(), S beta=Teuchos::ScalarTraits< S >::zero()) const
 Computes the operator-multivector application. More...
 
Pure virtual functions to be overridden by subclasses.
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

typedef S Tpetra::Operator< S , LO , GO , Node >::scalar_type
inherited

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

Definition at line 92 of file Tpetra_Operator.hpp.

typedef LO Tpetra::Operator< S , LO , GO , Node >::local_ordinal_type
inherited

The local index type.

Definition at line 95 of file Tpetra_Operator.hpp.

typedef GO Tpetra::Operator< S , LO , GO , Node >::global_ordinal_type
inherited

The global index type.

Definition at line 98 of file Tpetra_Operator.hpp.

typedef Node Tpetra::Operator< S , LO , GO , Node >::node_type
inherited

The Kokkos Node type.

Definition at line 101 of file Tpetra_Operator.hpp.

Constructor & Destructor Documentation

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

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::Operator< S, LO, GO, Node >.

Definition at line 103 of file Tpetra_RTIOp.hpp.

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::Operator< S, LO, GO, Node >.

Definition at line 104 of file Tpetra_RTIOp.hpp.

template<class S, class LO, class GO, class Node, class Kernel>
void Tpetra::RTI::KernelOp< S, LO, GO, Node, Kernel >::apply ( const MultiVector< S, LO, GO, Node > &  X,
MultiVector< S, LO, GO, Node > &  Y,
Teuchos::ETransp  mode = Teuchos::NO_TRANS,
alpha = Teuchos::ScalarTraits<S>::one (),
beta = Teuchos::ScalarTraits<S>::zero () 
) const
inlinevirtual

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.

Implements Tpetra::Operator< S, LO, GO, Node >.

Definition at line 107 of file Tpetra_RTIOp.hpp.

virtual bool Tpetra::Operator< S , LO , GO , 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.


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