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

Teuchos::RCP< tsqr_typemakeTsqr (const Teuchos::RCP< Teuchos::ParameterList > &plist, Teuchos::RCP< node_tsqr_type > &nodeTsqr, Teuchos::RCP< dist_tsqr_type > &distTsqr)
 Instantiate and return the TSQR implementation.
void prepareTsqr const
Teuchos::RCP
< scalar_messenger_type >
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 (NodeTsqrType), you may need to create a subclass (not specialization) of TsqrFactory that knows how to instantiate that intranode TSQR class. Alternately, you could write NodeTsqrType so that the provided default implementation of makeNodeTsqr() works.
If you have implemented a new internode TSQR factorization type (DistTsqrType), you may need to create a subclass (not specialization) of TsqrFactory that knows how to instantiate that internode TSQR class. Alternately, you could write DistTsqrType so that the provided default implementation of makeDistTsqr() works.
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 100 of file TsqrFactory.hpp.


Constructor & Destructor Documentation

template<class LO, class S, class NodeTsqrType, class DistTsqrType>
void prepareTsqr const Teuchos::RCP<scalar_messenger_type> virtual TSQR::Trilinos::TsqrFactory< LO, S, NodeTsqrType, DistTsqrType >::~TsqrFactory ( ) [inline, virtual]

Virtual destructor for memory safety of derived classes.

Definition at line 145 of file TsqrFactory.hpp.


Member Function Documentation

template<class LO, class S, class NodeTsqrType, class DistTsqrType>
Teuchos::RCP<tsqr_type> TSQR::Trilinos::TsqrFactory< LO, S, NodeTsqrType, DistTsqrType >::makeTsqr ( const Teuchos::RCP< Teuchos::ParameterList > &  plist,
Teuchos::RCP< node_tsqr_type > &  nodeTsqr,
Teuchos::RCP< dist_tsqr_type > &  distTsqr 
) [inline]

Instantiate and return the TSQR implementation.

Parameters:
plist[in/out] Parameter list (keys depend on the subclass; keys are accessed in the subclass' makeNodeTsqr() method). On output: On output: Missing parameters are filled in with default values.
nodeTsqr[out] On output, points to the node_tsqr_type object that TSQR will use for the intranode part of its computations.
distTsqr[out] On output, points to the dist_tsqr_type object that TSQR will use for the internode part of its computations.
Returns:
The node_tsqr_type instance that implements TSQR.

Definition at line 127 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