SG++-Doxygen-Documentation
Loading...
Searching...
No Matches
sgpp::datadriven::DBMatOffline Class Referenceabstract

Class that is used to decompose and store the left-hand-side matrix for the density based classification approach (The classification is divided into two parts: the offline step that does not depend on the actual data and the online step that depends on the data). More...

#include <DBMatOffline.hpp>

Inheritance diagram for sgpp::datadriven::DBMatOffline:
sgpp::datadriven::DBMatOfflineGE sgpp::datadriven::DBMatOfflinePermutable sgpp::datadriven::DBMatOfflineChol sgpp::datadriven::DBMatOfflineOrthoAdapt sgpp::datadriven::DBMatOfflineDenseIChol

Public Member Functions

virtual void buildMatrix (Grid *grid, const RegularizationConfiguration &regularizationConfig)
 Builds the right hand side matrix with or without the regularization term depending on the type of decomposition.
 
virtual DBMatOfflineclone () const =0
 Interface for the clone idiom.
 
virtual void compute_inverse ()
 
virtual void compute_inverse_parallel (std::shared_ptr< BlacsProcessGrid > processGrid, const ParallelConfiguration &parallelConfig)
 parallel/distributed version of compute_inverse()
 
void compute_L2_refine_vectors (DataMatrix *mat_refine, Grid *grid, size_t newPoints)
 computes vectors of L2 products of grid points for refinement
 
 DBMatOffline (const DBMatOffline &rhs)
 Copy Constructor.
 
 DBMatOffline (const std::string &fileName)
 Constructor Create offline object from serialized offline object.
 
 DBMatOffline (DBMatOffline &&rhs)=default
 Default move constructor.
 
virtual void decomposeMatrix (const RegularizationConfiguration &regularizationConfig, const DensityEstimationConfiguration &densityEstimationConfig)=0
 Decomposes the matrix according to the chosen decomposition type.
 
virtual void decomposeMatrixParallel (RegularizationConfiguration &regularizationConfig, DensityEstimationConfiguration &densityEstimationConfig, std::shared_ptr< BlacsProcessGrid > processGrid, const ParallelConfiguration &parallelConfig)
 The parallel/distributed version of decomposeMatrix(...)
 
DataMatrixDistributedgetDecomposedInverseDistributed ()
 Get a reference to the distributed decomposed matrix, analogously to getDecomposedMatrixDistributed()
 
DataMatrixgetDecomposedMatrix ()
 Get a reference to the decomposed matrix.
 
DataMatrixDistributedgetDecomposedMatrixDistributed ()
 Get a reference to the distributed decomposed matrix.
 
virtual sgpp::datadriven::MatrixDecompositionType getDecompositionType ()=0
 Returns the decomposition type of the DBMatOffline object.
 
virtual size_t getGridSize ()
 Returns the dimensionality of the quadratic lhs matrix (i.e.
 
DataMatrixgetInverseMatrix ()
 Get a reference to the inverse matrix.
 
DataMatrixgetLhsMatrix_ONLY_FOR_TESTING ()
 Allows access to lhs matrix, which is meant ONLY FOR TESTING.
 
virtual const DataMatrixgetUnmodifiedR ()=0
 Get the unmodified (without added lambda) system matrix R.
 
virtual const DataMatrixDistributedgetUnmodifiedRDistributed (std::shared_ptr< BlacsProcessGrid > processGrid, const ParallelConfiguration &parallelConfig)=0
 Get the distributed version of the unmodified (without added lambda) system matrix R.
 
virtual bool isRefineable ()=0
 Only Offline objects based on Cholesky decomposition, or orthogonal adaptivity can be refined.
 
DBMatOfflineoperator= (const DBMatOffline &rhs)
 Default copy assign operator.
 
DBMatOfflineoperator= (DBMatOffline &&rhs)=default
 Default move assign operator.
 
void printMatrix ()
 Prints the matrix onto standard output.
 
virtual void store (const std::string &fileName)
 Serialize the DBMatOffline Object.
 
virtual void syncDistributedDecomposition (std::shared_ptr< BlacsProcessGrid > processGrid, const ParallelConfiguration &parallelConfig)
 Synchronizes the decomposed matrix.
 
virtual void syncDistributedInverse (std::shared_ptr< BlacsProcessGrid > processGrid, const ParallelConfiguration &parallelConfig)
 Synchronizes the inverse matrix.
 
virtual void updateRegularization (double lambda)=0
 Modifies the decomposition to update the regularization parameter lambda.
 
virtual void updateRegularizationParallel (double lambda, std::shared_ptr< BlacsProcessGrid > processGrid, const ParallelConfiguration &parallelConfig)=0
 Modifies the parallel decomposition to update the regularization parameter lambda.
 
virtual ~DBMatOffline ()=default
 Default virtual destructor.
 

Public Attributes

std::set< std::set< size_t > > interactions
 

Protected Member Functions

 DBMatOffline ()
 
void parseInter (const std::string &fileName, std::set< std::set< size_t > > &interactions) const
 Read the Interactionsterms from a serialized DBMatOfflibe object.
 

Protected Attributes

bool isConstructed
 
bool isDecomposed
 
DataMatrixDistributed lhsDistributed
 
DataMatrixDistributed lhsDistributedInverse
 
DataMatrix lhsInverse
 
DataMatrix lhsMatrix
 

Detailed Description

Class that is used to decompose and store the left-hand-side matrix for the density based classification approach (The classification is divided into two parts: the offline step that does not depend on the actual data and the online step that depends on the data).

Uses Gnu Scientific Library (GSL).

Constructor & Destructor Documentation

◆ DBMatOffline() [1/4]

sgpp::datadriven::DBMatOffline::DBMatOffline ( const std::string &  fileName)
explicit

Constructor Create offline object from serialized offline object.

Parameters
fileNamepath to the file that stores serialized offline object

References interactions, and parseInter().

◆ DBMatOffline() [2/4]

sgpp::datadriven::DBMatOffline::DBMatOffline ( const DBMatOffline rhs)

Copy Constructor.

Parameters
rhsObject to copy

◆ DBMatOffline() [3/4]

sgpp::datadriven::DBMatOffline::DBMatOffline ( DBMatOffline &&  rhs)
default

Default move constructor.

◆ ~DBMatOffline()

virtual sgpp::datadriven::DBMatOffline::~DBMatOffline ( )
virtualdefault

Default virtual destructor.

◆ DBMatOffline() [4/4]

sgpp::datadriven::DBMatOffline::DBMatOffline ( )
protected

Member Function Documentation

◆ buildMatrix()

void sgpp::datadriven::DBMatOffline::buildMatrix ( Grid grid,
const RegularizationConfiguration regularizationConfig 
)
virtual

Builds the right hand side matrix with or without the regularization term depending on the type of decomposition.

Parameters
gridThe grid object the matrix is based on
regularizationConfigConfigures the regularization which is incorporated into the lhs

Reimplemented in sgpp::datadriven::DBMatOfflineGE, and sgpp::datadriven::DBMatOfflineOrthoAdapt.

References sgpp::op_factory::createOperationLTwoDotExplicit(), grid(), isConstructed, and lhsMatrix.

Referenced by sgpp::datadriven::DBMatOfflineGE::buildMatrix(), sgpp::datadriven::DBMatOfflineOrthoAdapt::buildMatrix(), sgpp::datadriven::ModelFittingDensityEstimationOnOffParallel::fit(), sgpp::datadriven::DBMatPermutationFactory::getPermutedObject(), and main().

◆ clone()

virtual DBMatOffline * sgpp::datadriven::DBMatOffline::clone ( ) const
pure virtual

Interface for the clone idiom.

Returns
a copy of this very object as a pointer to a new DBMatOffline object which is owned by the caller.

Implemented in sgpp::datadriven::DBMatOfflineChol, sgpp::datadriven::DBMatOfflineDenseIChol, and sgpp::datadriven::DBMatOfflineOrthoAdapt.

Referenced by sgpp::datadriven::ModelFittingDensityEstimationOnOff::fit(), and sgpp::datadriven::DBMatPermutationFactory::getPermutedObject().

◆ compute_inverse()

void sgpp::datadriven::DBMatOffline::compute_inverse ( )
virtual

◆ compute_inverse_parallel()

void sgpp::datadriven::DBMatOffline::compute_inverse_parallel ( std::shared_ptr< BlacsProcessGrid processGrid,
const ParallelConfiguration parallelConfig 
)
virtual

parallel/distributed version of compute_inverse()

Parameters
processGridprocess grid to distribute the matrix on
parallelConfig

Reimplemented in sgpp::datadriven::DBMatOfflineChol, and sgpp::datadriven::DBMatOfflineOrthoAdapt.

Referenced by sgpp::datadriven::ModelFittingDensityEstimationOnOffParallel::fit().

◆ compute_L2_refine_vectors()

void sgpp::datadriven::DBMatOffline::compute_L2_refine_vectors ( DataMatrix mat_refine,
Grid grid,
size_t  newPoints 
)

computes vectors of L2 products of grid points for refinement

Parameters
mat_refinematrix to store L2 vectors
gridunderlying grid
newPointsamount of points to refine

References grid(), sgpp::base::Linear, and sgpp::base::ModLinear.

Referenced by sgpp::datadriven::DBMatOfflineChol::choleskyModification().

◆ decomposeMatrix()

virtual void sgpp::datadriven::DBMatOffline::decomposeMatrix ( const RegularizationConfiguration regularizationConfig,
const DensityEstimationConfiguration densityEstimationConfig 
)
pure virtual

Decomposes the matrix according to the chosen decomposition type.

The number of rows of the stored result depends on the decomposition type.

Parameters
regularizationConfigthe regularization configuration
densityEstimationConfigthe density estimation configuration

Implemented in sgpp::datadriven::DBMatOfflineChol, sgpp::datadriven::DBMatOfflineDenseIChol, and sgpp::datadriven::DBMatOfflineOrthoAdapt.

Referenced by sgpp::datadriven::ModelFittingDensityEstimationOnOffParallel::fit(), sgpp::datadriven::DBMatPermutationFactory::getPermutedObject(), and main().

◆ decomposeMatrixParallel()

void sgpp::datadriven::DBMatOffline::decomposeMatrixParallel ( RegularizationConfiguration regularizationConfig,
DensityEstimationConfiguration densityEstimationConfig,
std::shared_ptr< BlacsProcessGrid processGrid,
const ParallelConfiguration parallelConfig 
)
virtual

The parallel/distributed version of decomposeMatrix(...)

Parameters
regularizationConfigthe regularization configuration
densityEstimationConfigthe density estimation configuration
processGridprocess grid to distribute the matrix on
parallelConfig

Reimplemented in sgpp::datadriven::DBMatOfflineChol, and sgpp::datadriven::DBMatOfflineOrthoAdapt.

Referenced by sgpp::datadriven::ModelFittingDensityEstimationOnOffParallel::fit().

◆ getDecomposedInverseDistributed()

DataMatrixDistributed & sgpp::datadriven::DBMatOffline::getDecomposedInverseDistributed ( )

◆ getDecomposedMatrix()

◆ getDecomposedMatrixDistributed()

DataMatrixDistributed & sgpp::datadriven::DBMatOffline::getDecomposedMatrixDistributed ( )

Get a reference to the distributed decomposed matrix.

Throws if matrix has not yet been decomposed. In order to return valid data, syncDistributedDecomposition() has to be called if the decomposition was changed (after refinements).

References isDecomposed, and lhsDistributed.

Referenced by sgpp::datadriven::DBMatOnlineDEChol::solveSLEParallel().

◆ getDecompositionType()

◆ getGridSize()

◆ getInverseMatrix()

DataMatrix & sgpp::datadriven::DBMatOffline::getInverseMatrix ( )

Get a reference to the inverse matrix.

Returns
inverse matrix

References lhsInverse.

Referenced by sgpp::datadriven::DBMatOnlineDE_SMW::smw_adapt(), and sgpp::datadriven::DBMatOnlineDE_SMW::solveSLE().

◆ getLhsMatrix_ONLY_FOR_TESTING()

sgpp::base::DataMatrix & sgpp::datadriven::DBMatOffline::getLhsMatrix_ONLY_FOR_TESTING ( )

Allows access to lhs matrix, which is meant ONLY FOR TESTING.

References lhsMatrix.

◆ getUnmodifiedR()

virtual const DataMatrix & sgpp::datadriven::DBMatOffline::getUnmodifiedR ( )
pure virtual

Get the unmodified (without added lambda) system matrix R.

Returns
Matrix R

Implemented in sgpp::datadriven::DBMatOfflineChol, and sgpp::datadriven::DBMatOfflineOrthoAdapt.

◆ getUnmodifiedRDistributed()

virtual const DataMatrixDistributed & sgpp::datadriven::DBMatOffline::getUnmodifiedRDistributed ( std::shared_ptr< BlacsProcessGrid processGrid,
const ParallelConfiguration parallelConfig 
)
pure virtual

Get the distributed version of the unmodified (without added lambda) system matrix R.

Only possible in the ScaLAPACK version.

Parameters
processGridBLACS process grid
parallelConfigconfig options for ScaLAPACK
Returns
Matrix R

Implemented in sgpp::datadriven::DBMatOfflineChol, and sgpp::datadriven::DBMatOfflineOrthoAdapt.

◆ isRefineable()

virtual bool sgpp::datadriven::DBMatOffline::isRefineable ( )
pure virtual

Only Offline objects based on Cholesky decomposition, or orthogonal adaptivity can be refined.

Returns
true if object can be refined, else false;

Implemented in sgpp::datadriven::DBMatOfflineChol, and sgpp::datadriven::DBMatOfflineOrthoAdapt.

◆ operator=() [1/2]

DBMatOffline & sgpp::datadriven::DBMatOffline::operator= ( const DBMatOffline rhs)

Default copy assign operator.

References interactions, isConstructed, isDecomposed, lhsInverse, and lhsMatrix.

◆ operator=() [2/2]

DBMatOffline & sgpp::datadriven::DBMatOffline::operator= ( DBMatOffline &&  rhs)
default

Default move assign operator.

◆ parseInter()

void sgpp::datadriven::DBMatOffline::parseInter ( const std::string &  fileName,
std::set< std::set< size_t > > &  interactions 
) const
protected

Read the Interactionsterms from a serialized DBMatOfflibe object.

Parameters
fileNamepath of the serialized DBMatOffline object
interactionsthe interactions to populate

References fileName, and sgpp::base::StringTokenizer::tokenize().

Referenced by DBMatOffline().

◆ printMatrix()

void sgpp::datadriven::DBMatOffline::printMatrix ( )

◆ store()

void sgpp::datadriven::DBMatOffline::store ( const std::string &  fileName)
virtual

◆ syncDistributedDecomposition()

void sgpp::datadriven::DBMatOffline::syncDistributedDecomposition ( std::shared_ptr< BlacsProcessGrid processGrid,
const ParallelConfiguration parallelConfig 
)
virtual

◆ syncDistributedInverse()

void sgpp::datadriven::DBMatOffline::syncDistributedInverse ( std::shared_ptr< BlacsProcessGrid processGrid,
const ParallelConfiguration parallelConfig 
)
virtual

◆ updateRegularization()

virtual void sgpp::datadriven::DBMatOffline::updateRegularization ( double  lambda)
pure virtual

Modifies the decomposition to update the regularization parameter lambda.

Parameters
lambdaNew lambda value

Implemented in sgpp::datadriven::DBMatOfflineChol, and sgpp::datadriven::DBMatOfflineOrthoAdapt.

◆ updateRegularizationParallel()

virtual void sgpp::datadriven::DBMatOffline::updateRegularizationParallel ( double  lambda,
std::shared_ptr< BlacsProcessGrid processGrid,
const ParallelConfiguration parallelConfig 
)
pure virtual

Modifies the parallel decomposition to update the regularization parameter lambda.

Parameters
lambdaNew lambda value
processGridScaLAPACK process grid
parallelConfigConfiguration for ScaLAPACK

Implemented in sgpp::datadriven::DBMatOfflineChol, and sgpp::datadriven::DBMatOfflineOrthoAdapt.

Member Data Documentation

◆ interactions

◆ isConstructed

◆ isDecomposed

◆ lhsDistributed

◆ lhsDistributedInverse

◆ lhsInverse

◆ lhsMatrix

DataMatrix sgpp::datadriven::DBMatOffline::lhsMatrix
protected

Referenced by buildMatrix(), sgpp::datadriven::DBMatOfflineGE::buildMatrix(), sgpp::datadriven::DBMatOfflineChol::choleskyAddPoint(), sgpp::datadriven::DBMatOfflineChol::choleskyModification(), sgpp::datadriven::DBMatOfflineDenseIChol::choleskyModification(), sgpp::datadriven::DBMatOfflineChol::choleskyPermutation(), sgpp::datadriven::DBMatOfflineChol::compute_inverse(), sgpp::datadriven::DBMatOfflineOrthoAdapt::compute_inverse(), sgpp::datadriven::DBMatOfflineChol::compute_inverse_parallel(), sgpp::datadriven::DBMatOfflineOrthoAdapt::compute_inverse_parallel(), sgpp::datadriven::DBMatOfflineGE::DBMatOfflineGE(), sgpp::datadriven::DBMatOfflineOrthoAdapt::DBMatOfflineOrthoAdapt(), sgpp::datadriven::DBMatOfflineChol::decomposeMatrix(), sgpp::datadriven::DBMatOfflineDenseIChol::decomposeMatrix(), sgpp::datadriven::DBMatOfflineOrthoAdapt::decomposeMatrix(), sgpp::datadriven::DBMatOfflineChol::decomposeMatrixParallel(), sgpp::datadriven::DBMatOfflineOrthoAdapt::decomposeMatrixParallel(), getDecomposedMatrix(), getGridSize(), getLhsMatrix_ONLY_FOR_TESTING(), sgpp::datadriven::DBMatOfflineOrthoAdapt::getUnmodifiedR(), sgpp::datadriven::DBMatOfflineOrthoAdapt::getUnmodifiedRDistributed(), sgpp::datadriven::DBMatOfflineOrthoAdapt::hessenberg_decomposition(), sgpp::datadriven::DBMatOfflineOrthoAdapt::invert_symmetric_tridiag(), operator=(), sgpp::datadriven::DBMatOfflinePermutable::permuteLhsMatrix(), printMatrix(), store(), syncDistributedDecomposition(), sgpp::datadriven::DBMatOfflineOrthoAdapt::updateRegularization(), and sgpp::datadriven::DBMatOfflineOrthoAdapt::updateRegularizationParallel().


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