Kokkos Node API and Local Linear Algebra Kernels Version of the Day
Public Member Functions
TSQR::Trilinos::TsqrFactory< LO, S, NodeTsqrType, DistTsqrType > Class Template Reference

Base class for TSQR implementation instantiation. More...

#include <TsqrFactory.hpp>

Inheritance diagram for TSQR::Trilinos::TsqrFactory< LO, S, NodeTsqrType, DistTsqrType >:
Inheritance graph
[legend]

List of all members.

Public Member Functions

virtual void makeTsqr (const Teuchos::ParameterList &plist, const scalar_messenger_ptr &messenger, tsqr_ptr &tsqr) const
virtual ~TsqrFactory ()
 Virtual destructor for memory safety of derived classes.

Detailed Description

template<class LO, class S, class NodeTsqrType, class DistTsqrType>
class TSQR::Trilinos::TsqrFactory< LO, S, NodeTsqrType, DistTsqrType >

Base class for TSQR implementation instantiation.

Each child class of TsqrFactory know how to instantiate a particular TSQR implementation. TsqrFactory contains all common functionality for this task.

Template Parameters:
LOThe (local) ordinal type used by TSQR.
SThe Scalar type used by TSQR; the type of the entries of the matrices to factor.
NodeTsqrTypeThe type of the intranode part of TSQR.
DistTsqrTypeThe type of the internode part of TSQR.
Note:
Unless you need to change the interface between Trilinos and TSQR, you don't need to do anything with TsqrFactory or its subclasses. Just choose the appropriate subclass of TsqrAdaptor. TsqrFactory and its subclasses don't have anything to do with any of the Trilinos multivector classes.
If you have implemented a new intranode TSQR factorization type, you'll need to create a subclass (not specialization) of TsqrFactory that knows how to instantiate that intranode TSQR class.
If you have implemented a new internode TSQR factorization type, you'll need to create a subclass (not specialization) of TsqrFactory that knows how to instantiate that internode TSQR class.
If you want to change which TSQR implementation is invoked for a particular multivector (MV) class, you don't need to do anything with this class, as long as the appropriate subclass of TsqrFactory for the desired NodeTsqrType and DistTsqrType exists. Just change the factory_type typedef in the specialization of TsqrTypeAdaptor for the MV class.

Definition at line 83 of file TsqrFactory.hpp.


Constructor & Destructor Documentation

template<class LO, class S, class NodeTsqrType, class DistTsqrType>
virtual TSQR::Trilinos::TsqrFactory< LO, S, NodeTsqrType, DistTsqrType >::~TsqrFactory ( ) [inline, virtual]

Virtual destructor for memory safety of derived classes.

Definition at line 120 of file TsqrFactory.hpp.


Member Function Documentation

template<class LO, class S, class NodeTsqrType, class DistTsqrType>
virtual void TSQR::Trilinos::TsqrFactory< LO, S, NodeTsqrType, DistTsqrType >::makeTsqr ( const Teuchos::ParameterList plist,
const scalar_messenger_ptr messenger,
tsqr_ptr tsqr 
) const [inline, virtual]

Instantiate and return the two TSQR implementation objects.

Parameters:
plist[in] Parameter list (keys depend on the subclass; keys are accessed in the subclass' makeNodeTsqr() method)
scalar_messenger_ptr[in] Pointer to the underlying internode communication handler, as initialized by TSQR::Trilinos::CommFactory.
node_tsqr[out] On output, points to the node_tsqr_type object that TSQR will use for the intranode part of its computations.
tsqr[out] On output, points to the node_tsqr_type object that TSQR will use for the internode part of its computations.

Definition at line 110 of file TsqrFactory.hpp.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends