Amesos2 - Direct Sparse Solver Interfaces  Version of the Day
Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
Amesos2::PardisoMKL< Matrix, Vector > Class Template Reference

Amesos2 interface to the PardisoMKL package. More...

#include <Amesos2_PardisoMKL_decl.hpp>

Inheritance diagram for Amesos2::PardisoMKL< Matrix, Vector >:
Inheritance graph
[legend]
Collaboration diagram for Amesos2::PardisoMKL< Matrix, Vector >:
Collaboration graph
[legend]

Public Types

typedef PardisoMKL< Matrix,
Vector > 
type
 
typedef SolverCore
< Amesos2::PardisoMKL, Matrix,
Vector > 
super_type
 
typedef super_type::scalar_type scalar_type
 
typedef
super_type::local_ordinal_type 
local_ordinal_type
 
typedef
super_type::global_ordinal_type 
global_ordinal_type
 
typedef
super_type::global_size_type 
global_size_type
 
typedef TypeMap
< Amesos2::PardisoMKL,
scalar_type > 
type_map
 
typedef type_map::type solver_scalar_type
 
typedef type_map::magnitude_type solver_magnitude_type
 
typedef TypeMap
< Amesos2::PardisoMKL,
local_ordinal_type >::type 
int_t
 
typedef FunctionMap
< Amesos2::PardisoMKL, int_t > 
function_map
 
typedef
Kokkos::DefaultHostExecutionSpace 
HostExecSpaceType
 
typedef Kokkos::View< int_t
*, HostExecSpaceType > 
host_size_type_array
 
typedef Kokkos::View< int_t
*, HostExecSpaceType > 
host_ordinal_type_array
 
typedef Kokkos::View
< solver_scalar_type
*, HostExecSpaceType > 
host_value_type_array
 
typedef ConcreteSolver< Matrix,
Vector > 
solver_type
 
typedef Matrix matrix_type
 
typedef Vector vector_type
 
typedef MatrixAdapter
< matrix_type >::node_t 
node_type
 

Public Member Functions

bool matrixShapeOK () override
 Returns true if the solver can handle this matrix shape. More...
 
void setA (const Teuchos::RCP< const Matrix > a, EPhase keep_phase=CLEAN) override
 Sets the matrix A of this solver. More...
 
void setA (const Matrix *a, EPhase keep_phase=CLEAN) override
 Sets the matrix A of this solver. More...
 
void setX (const Teuchos::RCP< Vector > x) override
 Sets the LHS vector X.
 
void setX (Vector *x) override
 Sets the LHS vector X using a raw pointer.
 
const Teuchos::RCP< Vector > getX () override
 Returns the vector that is the LHS of the linear system.
 
Vector * getXRaw () override
 Returns a raw pointer to the LHS of the linear system.
 
void setB (const Teuchos::RCP< const Vector > b) override
 Sets the RHS vector B.
 
void setB (const Vector *b) override
 Sets the RHS vector B using a raw pointer.
 
const Teuchos::RCP< const Vector > getB () override
 Returns the vector that is the RHS of the linear system.
 
const Vector * getBRaw () override
 Returns a raw pointer to the RHS of the linear system.
 
std::string description () const override
 Returns a short description of this Solver.
 
void describe (Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default) const override
 
void printTiming (Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const override
 Prints timing information about the current solver. More...
 
void getTiming (Teuchos::ParameterList &timingParameterList) const override
 Extracts timing information from the current solver. More...
 
std::string name () const override
 Return the name of this solver. More...
 
Constructor/Destructor methods
 PardisoMKL (Teuchos::RCP< const Matrix > A, Teuchos::RCP< Vector > X, Teuchos::RCP< const Vector > B)
 Initialize from Teuchos::RCP. More...
 
 ~PardisoMKL ()
 Destructor.
 
Mathematical functions
super_typepreOrdering () override
 Pre-orders the matrix A for minimal fill-in. More...
 
super_typesymbolicFactorization () override
 Performs symbolic factorization on the matrix A. More...
 
super_typenumericFactorization () override
 Performs numeric factorization on the matrix A. More...
 
void solve () override
 Solves $ A X = B$ (or $ A^T X = B$ ) More...
 
void solve (const Teuchos::Ptr< Vector > X, const Teuchos::Ptr< const Vector > B) const override
 Solve $ A X = B$ using the given X and B vectors. More...
 
void solve (Vector *X, const Vector *B) const override
 Solve $ A X = B$ using the given X and B vectors. More...
 
int solve_ir (const Teuchos::Ptr< Vector > X, const Teuchos::Ptr< const Vector > B, const int maxNumIters, const bool verbose) const
 
int solve_ir (Vector *X, const Vector *B, const int maxNumIters, const bool verbose) const
 
int solve_ir (const int maxNumIters, const bool verbose)
 
Parameter methods
super_typesetParameters (const Teuchos::RCP< Teuchos::ParameterList > &parameterList) override
 Set/update internal variables and solver options. More...
 
Teuchos::RCP< const
Teuchos::ParameterList > 
getValidParameters () const override
 Return a const parameter list of all of the valid parameters that this->setParameterList(...) will accept. More...
 
void setParameterList (const Teuchos::RCP< Teuchos::ParameterList > &parameterList)
 Set or update internal variables and solver options. More...
 
Teuchos::RCP
< Teuchos::ParameterList > 
getNonconstParameterList ()
 This is a empty stub. More...
 
Teuchos::RCP
< Teuchos::ParameterList > 
unsetParameterList ()
 This is an empty stub. More...
 
Accessor methods
Teuchos::RCP< const
Teuchos::Comm< int > > 
getComm () const override
 Returns a pointer to the Teuchos::Comm communicator with this operator.
 
StatusgetStatus () const override
 Returns a reference to this solver's internal status object.
 

Static Public Attributes

static const char * name = "PARDISOMKL"
 The name of this solver interface.
 

Protected Member Functions

void setNnzLU (size_t nnz)
 Set the number of non-zero values in the $L$ and $U$ factors. More...
 

Protected Attributes

Teuchos::RCP< const
MatrixAdapter< Matrix > > 
matrixA_
 The LHS operator.
 
bool matrix_loaded_
 
Teuchos::RCP< Vector > multiVecX_
 The LHS vector/multi-vector.
 
Teuchos::RCP< const Vector > multiVecB_
 The RHS vector/multi-vector. More...
 
global_size_type globalNumRows_
 Number of global rows in matrixA_.
 
global_size_type globalNumCols_
 Number of global columns in matrixA_.
 
global_size_type globalNumNonZeros_
 Number of global non-zero values in matrixA_.
 
global_size_type rowIndexBase_
 Index base of rowmap of matrixA_.
 
global_size_type columnIndexBase_
 Index base of column map of matrixA_.
 
Status status_
 Holds status information about a solver.
 
Control control_
 Parameters for solving.
 
Timers timers_
 Various timing statistics.
 
int rank_
 The MPI rank of this image.
 
bool root_
 If true, then this is the root processor.
 
int nprocs_
 Number of process images in the matrix communicator.
 

Private Member Functions

int preOrdering_impl ()
 Performs pre-ordering on the matrix to increase efficiency. More...
 
int symbolicFactorization_impl ()
 Perform symbolic factorization of the matrix using PardisoMKL. More...
 
int numericFactorization_impl ()
 PardisoMKL specific numeric factorization. More...
 
int solve_impl (const Teuchos::Ptr< MultiVecAdapter< Vector > > X, const Teuchos::Ptr< const MultiVecAdapter< Vector > > B) const
 PardisoMKL specific solve. More...
 
bool matrixShapeOK_impl () const
 Determines whether the shape of the matrix is OK for this solver. More...
 
void setParameters_impl (const Teuchos::RCP< Teuchos::ParameterList > &parameterList)
 
Teuchos::RCP< const
Teuchos::ParameterList > 
getValidParameters_impl () const
 
bool loadA_impl (EPhase current_phase)
 Reads matrix data into internal structures. More...
 
void check_pardiso_mkl_error (EPhase phase, int_t error) const
 Throws an appropriate runtime error in the event that error < 0 . More...
 
void set_pardiso_mkl_matrix_type (int_t mtype=0)
 

Private Attributes

host_value_type_array nzvals_view_
 Stores the values of the nonzero entries for PardisoMKL.
 
host_ordinal_type_array colind_view_
 Stores the location in Ai_ and Aval_ that starts row j.
 
host_size_type_array rowptr_view_
 Stores the row indices of the nonzero entries.
 
Teuchos::Array
< solver_scalar_type > 
xvals_
 Persisting, contiguous, 1D store for X.
 
Teuchos::Array
< solver_scalar_type > 
bvals_
 Persisting, contiguous, 1D store for B.
 
void * pt_ [64]
 PardisoMKL internal data address pointer.
 
int_t mtype_
 The matrix type. We deal only with unsymmetrix matrices.
 
int_t n_
 Number of equations in the sparse linear system.
 
Teuchos::Array< int_t > perm_
 Permutation vector.
 
int_t nrhs_
 number of righthand-side vectors
 
int_t iparm_ [64]
 
bool is_contiguous_
 

Static Private Attributes

static const int_t msglvl_ = 0
 The messaging level. Set to 1 if you wish for Pardiso MKL to print statistical info.
 
static const int_t maxfct_ = 1
 
static const int_t mnum_ = 1
 
static const bool complex_
 

Friends

class SolverCore< Amesos2::PardisoMKL, Matrix, Vector >
 

Detailed Description

template<class Matrix, class Vector>
class Amesos2::PardisoMKL< Matrix, Vector >

Amesos2 interface to the PardisoMKL package.

This class provides access to the Pardiso (MKL version 10.3 and compatible) sparse direct solver with out-of-core solve support. Access is provided for float and double scalar types, in both real and complex. Access to to Pardiso's 64-bit integer routines is also provided.

Constructor & Destructor Documentation

template<class Matrix , class Vector >
Amesos2::PardisoMKL< Matrix, Vector >::PardisoMKL ( Teuchos::RCP< const Matrix >  A,
Teuchos::RCP< Vector >  X,
Teuchos::RCP< const Vector >  B 
)

Initialize from Teuchos::RCP.

Warning
Should not be called directly! Use instead Amesos2::create() to initialize a PardisoMKL interface.

References Amesos2::PardisoMKL< Matrix, Vector >::iparm_, Amesos2::PardisoMKL< Matrix, Vector >::mtype_, Amesos2::PardisoMKL< Matrix, Vector >::pt_, and Amesos2::PardisoMKL< Matrix, Vector >::set_pardiso_mkl_matrix_type().

Member Function Documentation

template<class Matrix , class Vector >
int Amesos2::PardisoMKL< Matrix, Vector >::preOrdering_impl ( )
private

Performs pre-ordering on the matrix to increase efficiency.

PardisoMKL does reordering internally during symbolic factorization. Please refer to the "IPARM(2)" parameter for some reordering options.

template<class Matrix , class Vector >
int Amesos2::PardisoMKL< Matrix, Vector >::symbolicFactorization_impl ( )
private

Perform symbolic factorization of the matrix using PardisoMKL.

Called the sequence before numericFactorization.

Exceptions
std::runtime_errorPardisoMKL is not able to factor the matrix.
template<class Matrix , class Vector >
int Amesos2::PardisoMKL< Matrix, Vector >::numericFactorization_impl ( )
private

PardisoMKL specific numeric factorization.

Exceptions
std::runtime_errorPardisoMKL is not able to factor the matrix
template<class Matrix , class Vector >
int Amesos2::PardisoMKL< Matrix, Vector >::solve_impl ( const Teuchos::Ptr< MultiVecAdapter< Vector > >  X,
const Teuchos::Ptr< const MultiVecAdapter< Vector > >  B 
) const
private

PardisoMKL specific solve.

Uses the symbolic and numeric factorizations, along with the RHS vector B to solve the sparse system of equations.

The solution of the system is placed in X.

Exceptions
std::runtime_errorPardisoMKL is not able to solve the system.
template<class Matrix , class Vector >
bool Amesos2::PardisoMKL< Matrix, Vector >::matrixShapeOK_impl ( ) const
private

Determines whether the shape of the matrix is OK for this solver.

Pardiso MKL handles square matrices.

template<class Matrix , class Vector >
void Amesos2::PardisoMKL< Matrix, Vector >::setParameters_impl ( const Teuchos::RCP< Teuchos::ParameterList > &  parameterList)
private

The Pardiso MKL parameters that are currently recognized are:

  • "IPARM(2)"
  • "IPARM(4)"
  • "IPARM(8)"
  • "IPARM(10)"
  • "IPARM(12)"
  • "IPARM(18)"
  • "IPARM(24)"
  • "IPARM(25)"
  • "IPARM(60)"

Please see the Pardiso MKL documentation for a summary of the meaning and valid values for each parameter.

template<class Matrix , class Vector >
Teuchos::RCP< const Teuchos::ParameterList > Amesos2::PardisoMKL< Matrix, Vector >::getValidParameters_impl ( ) const
private
Returns
a const Teuchos::ParameterList of all valid parameters (set to their default values) for this solver.
template<class Matrix , class Vector >
bool Amesos2::PardisoMKL< Matrix, Vector >::loadA_impl ( EPhase  current_phase)
private

Reads matrix data into internal structures.

Parameters
[in]current_phasean indication of which solution phase this load is being performed for.
Returns
true if the matrix was loaded, false if not
template<class Matrix , class Vector >
void Amesos2::PardisoMKL< Matrix, Vector >::check_pardiso_mkl_error ( EPhase  phase,
int_t  error 
) const
private

Throws an appropriate runtime error in the event that error < 0 .

Parameters
phasethe phase for which this error is being checked. The meaning of a particular error value may depend on which phase was last performed
errorthe error value returned by PardisoMKL for the given phase.

We broadcast the input value from the rank=0 image to all others before checking the value. Before doing this we convert the error into an int value which allow us to easily broadcast its value to all process images without having to enable Teuchos long long support in the case where the user is making use of pardiso_64. The valid values of error certainly fit within an int.

template<class Matrix , class Vector >
void Amesos2::PardisoMKL< Matrix, Vector >::set_pardiso_mkl_matrix_type ( int_t  mtype = 0)
private

Sets the internal mtype_ member. Errors are thrown for unacceptable scalar/mtype combinations.

Parameters
mtypethe type of the matrix. This may come as input from the interface user, or may be set to the default value in case mtype == 0 on entry to this function.

Referenced by Amesos2::PardisoMKL< Matrix, Vector >::PardisoMKL().

template<template< class, class > class ConcreteSolver, class Matrix , class Vector >
Solver< Matrix, Vector > & Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::preOrdering ( void  )
overridevirtualinherited

Pre-orders the matrix A for minimal fill-in.

Rearranges the rows and columns of the matrix A to minimize the amount of fill-in of the non-zero entries of the matrix. Pre-ordering may or may not be supported by the underlying solver. If not supported, a call to this method simply does nothing.

Returns
a reference to this .
See Also
symbolicFactorization(), numericFactorization(), and solve()

Implements Amesos2::Solver< Matrix, Vector >.

template<template< class, class > class ConcreteSolver, class Matrix , class Vector >
Solver< Matrix, Vector > & Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::symbolicFactorization ( void  )
overridevirtualinherited

Performs symbolic factorization on the matrix A.

In addition to performing symbolic factorization on the matrix A, the call to symbolicFactorization() implies that no change will be made to the non-zero structure of the underlying matrix without a subsequent call to symbolicFactorization().

Precondition
Postcondition
Returns
a reference to this .
See Also
preOrdering(), numericFactorization(), and solve()

Implements Amesos2::Solver< Matrix, Vector >.

template<template< class, class > class ConcreteSolver, class Matrix , class Vector >
Solver< Matrix, Vector > & Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::numericFactorization ( void  )
overridevirtualinherited

Performs numeric factorization on the matrix A.

In addition to performing numeric factorization on the matrix A, the call to numericFactorization() implies that no change will be made to the underlying matrix values without a subsequent call to numericFactorization().

Precondition
  • The non-zero structure of the matrix should not have changed since the last call to symbolicFactorization(). Other changes can have arbitrary consequences.
  • The distribution of the matrix should not have changed since the last call to symbolicFactorization().
Postcondition
Numeric factorization will be performed (or marked to be performed) allowing solve() to be performed correctly despite a potential change in the matrix values (though not in the non-zero structure).
Returns
a reference to this
See Also
preOrdering(), symbolicFactorization(), and solve()

Implements Amesos2::Solver< Matrix, Vector >.

template<template< class, class > class ConcreteSolver, class Matrix , class Vector >
void Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::solve ( void  )
overridevirtualinherited

Solves $ A X = B$ (or $ A^T X = B$ )

Precondition
Postcondition
X will be set such that $ A X = B$ (or $ A^T X = B$ ), within the limits of the accuracy of the underlying solver.
Returns
void
See Also
preOrdering(), symbolicFactorization(), and numericFactorization()

Implements Amesos2::Solver< Matrix, Vector >.

template<template< class, class > class ConcreteSolver, class Matrix , class Vector>
void Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::solve ( const Teuchos::Ptr< Vector >  X,
const Teuchos::Ptr< const Vector >  B 
) const
overridevirtualinherited

Solve $ A X = B$ using the given X and B vectors.

This overload of solve uses the given X and B vectors when solving. This X and B are used in place of any X and B that were given upon construction of the Amesos2 solver instance and are used only for this solve.

If a permanent change of X and B are required, see the setX() and setB() methods.

Postcondition
  • The (multi)vector X contains the solution to the system
  • The X and B given at construction time (if any) are unchanged.

Implements Amesos2::Solver< Matrix, Vector >.

References Amesos2::Solver< Matrix, Vector >::numericFactorization().

template<template< class, class > class ConcreteSolver, class Matrix , class Vector>
void Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::solve ( Vector *  X,
const Vector *  B 
) const
overridevirtualinherited

Solve $ A X = B$ using the given X and B vectors.

This overload of solve uses the given X and B vectors when solving. This X and B are used in place of any X and B that were given upon construction of the Amesos2 solver instance and are used only for this solve.

If a permanent change of X and B are required, see the setX() and setB() methods.

Postcondition
  • The (multi)vector X contains the solution to the system
  • The X and B given at construction time (if any) are unchanged.

Implements Amesos2::Solver< Matrix, Vector >.

template<template< class, class > class ConcreteSolver, class Matrix , class Vector >
bool Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::matrixShapeOK ( void  )
overridevirtualinherited

Returns true if the solver can handle this matrix shape.

Returns true if the matrix shape is one that the underlying concrete sparse direct solver can handle. Classes that work only on square matrices should return false for rectangular matrices. Classes that work only on symmetric matrices would return false for non-symmetric matrices. etc.

Implements Amesos2::Solver< Matrix, Vector >.

Referenced by Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::SolverCore().

template<template< class, class > class ConcreteSolver, class Matrix, class Vector >
void Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::setA ( const Teuchos::RCP< const Matrix >  a,
EPhase  keep_phase = CLEAN 
)
overridevirtualinherited

Sets the matrix A of this solver.

Parameters
[in]aAn RCP to a matrix will will be used for future computation steps
[in]keep_phaseThis parameter tells the solver what state it should keep. For example, you may want to replace the matrix but keep the symbolic factorization because you know the structure of the new matrix is the same as the structure of the old matrix. In this case you would pass Amesos2::SYMBFACT as this parameter.

The default value for the second parameter is Amesos2::CLEAN, which means that the internal state of the solver will be completely reset. It will be as if no previous computational steps were performed.

Implements Amesos2::Solver< Matrix, Vector >.

template<template< class, class > class ConcreteSolver, class Matrix, class Vector>
void Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::setA ( const Matrix *  a,
EPhase  keep_phase = CLEAN 
)
inlineoverridevirtualinherited

Sets the matrix A of this solver.

Parameters
[in]aAn raw C pointer to a matrix will will be used for future computation steps.
[in]keep_phaseThis parameter tells the solver what state it should keep. For example, you may want to replace the matrix but keep the symbolic factorization because you know the structure of the new matrix is the same as the structure of the old matrix. In this case you would pass Amesos2::SYMBFACT as this parameter.

The default value for the second parameter is Amesos2::CLEAN, which means that the internal state of the solver will be completely reset. It will be as if no previous computational steps were performed.

Implements Amesos2::Solver< Matrix, Vector >.

Referenced by Amesos2::SolverCore< Amesos2::Umfpack, Matrix, Vector >::setA().

template<template< class, class > class ConcreteSolver, class Matrix , class Vector >
Solver< Matrix, Vector > & Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::setParameters ( const Teuchos::RCP< Teuchos::ParameterList > &  parameterList)
overridevirtualinherited

Set/update internal variables and solver options.

The setParameters method is consistent over all concrete solvers. It accepts general status and control parameters, as well as parameters specific to a given solver. If the solver does not recognize the parameter, then it will simply be ignored

Note
The ParameterList must be named "Amesos2". A list with any other name will be ignored.
Postcondition
  • Internal variables controlling the factorization and solve will be updated and take effect on all subsequent calls to numericFactorization() and solve().
  • All parameters whose value is to differ from the default values must be included in parameterList. Parameters not specified in parameterList revert to their default values.
Returns
a reference to this

Implements Amesos2::Solver< Matrix, Vector >.

Referenced by Amesos2::Lapack< Matrix, Vector >::Lapack(), Amesos2::SolverCore< Amesos2::Umfpack, Matrix, Vector >::setParameterList(), Amesos2::STRUMPACK< Matrix, Vector >::STRUMPACK(), Amesos2::Superludist< Matrix, Vector >::Superludist(), and Amesos2::Superlumt< Matrix, Vector >::Superlumt().

template<template< class, class > class ConcreteSolver, class Matrix , class Vector >
Teuchos::RCP< const Teuchos::ParameterList > Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::getValidParameters ( void  ) const
overridevirtualinherited

Return a const parameter list of all of the valid parameters that this->setParameterList(...) will accept.

Note
Check the documentation for your concrete solver to see a complete list of the values that each parameter may take. A solver may also recognize multiple data types as arguments for a particular parameters (eg. recognizing "YES" and "NO" as well as true and false ).

Implements Amesos2::Solver< Matrix, Vector >.

Referenced by Amesos2::Lapack< Matrix, Vector >::Lapack(), Amesos2::STRUMPACK< Matrix, Vector >::STRUMPACK(), Amesos2::Superludist< Matrix, Vector >::Superludist(), and Amesos2::Superlumt< Matrix, Vector >::Superlumt().

template<template< class, class > class ConcreteSolver, class Matrix, class Vector>
void Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::setParameterList ( const Teuchos::RCP< Teuchos::ParameterList > &  parameterList)
inlineinherited

Set or update internal variables and solver options.

Redefined from Teuchos::ParameterListAcceptor

Note
Alias for setParameters()
Parameters
[in]parameterList
template<template< class, class > class ConcreteSolver, class Matrix, class Vector>
Teuchos::RCP<Teuchos::ParameterList> Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::getNonconstParameterList ( )
inlineinherited

This is a empty stub.

Returns
template<template< class, class > class ConcreteSolver, class Matrix, class Vector>
Teuchos::RCP<Teuchos::ParameterList> Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::unsetParameterList ( )
inlineinherited

This is an empty stub.

Returns
template<template< class, class > class ConcreteSolver, class Matrix , class Vector >
void Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::describe ( Teuchos::FancyOStream &  out,
const Teuchos::EVerbosityLevel  verbLevel = Teuchos::Describable::verbLevel_default 
) const
overridevirtualinherited

Prints the status information about the current solver with some level of verbosity

Implements Amesos2::Solver< Matrix, Vector >.

References Amesos2::Util::printLine().

template<template< class, class > class ConcreteSolver, class Matrix , class Vector >
void Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::printTiming ( Teuchos::FancyOStream &  out,
const Teuchos::EVerbosityLevel  verbLevel 
) const
overridevirtualinherited

Prints timing information about the current solver.

The Amesos2::SolverCore base class takes care of tracking total time spent in the Amesos2 interface. Concrete solver interface class are responsible for reporting other timing statistics, which include time spent in:

  • Redistribution of matrix objects,
  • Conversion of matrix objects to solver-specific formats,
  • Redistribution of multi-vector objects,
  • Conversion of multi-vector objects to solver formats,
  • TPL symbolic factorizations,
  • TPL numeric factorizations, and
  • TPL solves

Implements Amesos2::Solver< Matrix, Vector >.

References Amesos2::Util::printLine().

template<template< class, class > class ConcreteSolver, class Matrix , class Vector >
void Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::getTiming ( Teuchos::ParameterList &  timingParameterList) const
overridevirtualinherited

Extracts timing information from the current solver.

Results are placed into the parameter list timingParameterList.

Parameters
[out]timingParameterListAccepts timing information from the current solver

Implements Amesos2::Solver< Matrix, Vector >.

template<template< class, class > class ConcreteSolver, class Matrix , class Vector >
std::string Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::name ( void  ) const
overridevirtualinherited

Return the name of this solver.

The name is given by the underlying concrete solver instance

Returns
A std::string which is the name of this solver

Implements Amesos2::Solver< Matrix, Vector >.

template<template< class, class > class ConcreteSolver, class Matrix, class Vector>
void Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::setNnzLU ( size_t  nnz)
inlineprotectedinherited

Set the number of non-zero values in the $L$ and $U$ factors.

Concrete solver classes may call this method if they wish to (or are able to) report the number of conbined non-zero count for the $L$ and $U$ factors.

Member Data Documentation

template<class Matrix, class Vector>
int_t Amesos2::PardisoMKL< Matrix, Vector >::iparm_[64]
private

PardisoMKL parameter vector. Note that the documentation uses 1-based indexing, but our interface must use 0-based indexing

Referenced by Amesos2::PardisoMKL< Matrix, Vector >::PardisoMKL().

template<class Matrix, class Vector>
const bool Amesos2::PardisoMKL< Matrix, Vector >::complex_
staticprivate
Initial value:
= Meta::or_<std::is_same_v<solver_scalar_type, PMKL::_MKL_Complex8>,
std::is_same_v<solver_scalar_type, PMKL::_DOUBLE_COMPLEX_t>>::value
template<template< class, class > class ConcreteSolver, class Matrix, class Vector>
bool Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::matrix_loaded_
protectedinherited

If true indicates that the current matrix A has been loaded into internal solver structures.

template<template< class, class > class ConcreteSolver, class Matrix, class Vector>
Teuchos::RCP<const Vector> Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >::multiVecB_
protectedinherited

The RHS vector/multi-vector.

We point to a const Vector because Amesos2 should never directly modify B.

Referenced by Amesos2::SolverCore< Amesos2::Umfpack, Matrix, Vector >::getB(), Amesos2::SolverCore< Amesos2::Umfpack, Matrix, Vector >::getBRaw(), and Amesos2::SolverCore< Amesos2::Umfpack, Matrix, Vector >::setB().


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