![]() |
PARALUTION
1.0.0
PARALUTION
|
ILU(p,q) preconditioner (see power(q)-pattern method, D. Lukarski "Parallel Sparse Linear Algebra for Multi-core and Many-core Platforms - Parallel Solvers and Preconditioners", PhD Thesis, 2012, KIT) More...
#include <preconditioner_multicolored_ilu.hpp>
Public Member Functions | |
MultiColoredILU () | |
virtual | ~MultiColoredILU () |
virtual void | Print (void) const |
Print information about the solver. More... | |
virtual void | ReBuildNumeric (void) |
Rebuild only with numerical computation (no allocation or data structure computation) More... | |
virtual void | Set (const int p) |
Initialize a multi-colored ILU(p,p+1) preconditioner. More... | |
virtual void | Set (const int p, const int q, const bool level=true) |
Initialize a multi-colored ILU(p,q) preconditioner; level==true will perform the factorization with levels; level==false will perform the factorization only on the power(q)-pattern. More... | |
virtual void | Clear (void) |
Clear (free all local data) the solver. More... | |
virtual void | Build (void) |
Build the solver (data allocation, structure computation, numerical computation) More... | |
virtual void | SetPrecondMatrixFormat (const unsigned int mat_format) |
Set a specific matrix type of the decomposed block matrices; if not set, CSR matrix format will be used. More... | |
virtual void | SetDecomposition (const bool decomp) |
Set if the preconditioner should be decomposed or not. More... | |
virtual void | Solve (const VectorType &rhs, VectorType *x) |
Solve Operator x = rhs. More... | |
virtual void | SolveZeroSol (const VectorType &rhs, VectorType *x) |
Solve Operator x = rhs; but set first the init x = 0. More... | |
void | SetOperator (const OperatorType &op) |
Set the Operator of the solver. More... | |
virtual void | ResetOperator (const OperatorType &op) |
Reset the operator; see ReBuildNumeric. More... | |
virtual void | MoveToHost (void) |
Move all the data (i.e. move the solver) to the host. More... | |
virtual void | MoveToAccelerator (void) |
Move all the data (i.e. move the solver) to the accelerator. More... | |
virtual void | Verbose (const int verb=1) |
Provide verbose output of the solver: verb == 0 no output verb == 1 print info about the solver (start,end); verb == 2 print (iter, residual) via iteration control;. More... | |
Protected Member Functions | |
virtual void | Build_Analyser_ (void) |
Build the analyzing matrix. More... | |
virtual void | Factorize_ (void) |
Factorize (i.e. build the preconditioner) More... | |
virtual void | PostAnalyse_ (void) |
Post-analyzing if the preconditioner is not decomposed. More... | |
virtual void | SolveL_ (void) |
Solve the lower-triangular (left) matrix. More... | |
virtual void | SolveD_ (void) |
Solve the diagonal part (only for SGS) More... | |
virtual void | SolveR_ (void) |
Solve the upper-trianguler (right) matrix. More... | |
virtual void | Solve_ (const VectorType &rhs, VectorType *x) |
Solve directly without block decomposition. More... | |
virtual void | ExtractRHSinX_ (const VectorType &rhs, VectorType *x) |
Extract the rhs into x under the permutation (see Analyse_()) and decompose x into block (x_block_[]) More... | |
virtual void | InsertSolution_ (VectorType *x) |
Insert the solution with backward permutation (from x_block_[]) More... | |
virtual void | Analyse_ (void) |
Analyse the matrix (i.e. multi-coloring decomposition) More... | |
virtual void | Permute_ (void) |
Permute the preconditioning matrix. More... | |
virtual void | Decompose_ (void) |
Decompose the structure into blocks (preconditioner_block_[] for the preconditioning matrix; and x_block_[] for the x vector) More... | |
virtual void | MoveToHostLocalData_ (void) |
Move all local data to the host. More... | |
virtual void | MoveToAcceleratorLocalData_ (void) |
Move all local data to the accelerator. More... | |
virtual void | PrintStart_ (void) const |
Print starting msg of the solver. More... | |
virtual void | PrintEnd_ (void) const |
Print ending msg of the solver. More... | |
Protected Attributes | |
int | q_ |
int | p_ |
bool | level_ |
int | nnz_ |
OperatorType * | analyzer_op_ |
OperatorType * | preconditioner_ |
OperatorType *** | preconditioner_block_ |
VectorType ** | x_block_ |
VectorType ** | diag_block_ |
VectorType | x_ |
VectorType | diag_ |
Solver< OperatorType, VectorType, ValueType > ** | diag_solver_ |
int | num_blocks_ |
int * | block_sizes_ |
bool | op_mat_format_ |
Keep the precond matrix in CSR or not. More... | |
unsigned int | precond_mat_format_ |
Precond matrix format. More... | |
bool | decomp_ |
Decompose the preconditioner into blocks or not. More... | |
const OperatorType * | op_ |
Pointer to the operator. More... | |
Solver< OperatorType, VectorType, ValueType > * | precond_ |
Pointer to the defined preconditioner. More... | |
bool | build_ |
Flag == true after building the solver (e.g. Build()) More... | |
LocalVector< int > | permutation_ |
Permutation vector (used if the solver performs permutation/re-ordering techniques) More... | |
int | verb_ |
Verbose flag verb == 0 no output verb == 1 print info about the solver (start,end); verb == 2 print (iter, residual) via iteration control;. More... | |
size_t | global_obj_id |
ILU(p,q) preconditioner (see power(q)-pattern method, D. Lukarski "Parallel Sparse Linear Algebra for Multi-core and Many-core Platforms - Parallel Solvers and Preconditioners", PhD Thesis, 2012, KIT)
paralution::MultiColoredILU< OperatorType, VectorType, ValueType >::MultiColoredILU | ( | ) |
|
virtual |
|
protectedvirtualinherited |
Analyse the matrix (i.e. multi-coloring decomposition)
|
virtualinherited |
Build the solver (data allocation, structure computation, numerical computation)
Reimplemented from paralution::Solver< OperatorType, VectorType, ValueType >.
|
protectedvirtual |
Build the analyzing matrix.
Reimplemented from paralution::MultiColored< OperatorType, VectorType, ValueType >.
|
virtualinherited |
Clear (free all local data) the solver.
Reimplemented from paralution::Solver< OperatorType, VectorType, ValueType >.
|
protectedvirtualinherited |
Decompose the structure into blocks (preconditioner_block_[] for the preconditioning matrix; and x_block_[] for the x vector)
|
protectedvirtualinherited |
Extract the rhs into x under the permutation (see Analyse_()) and decompose x into block (x_block_[])
|
protectedvirtual |
Factorize (i.e. build the preconditioner)
Reimplemented from paralution::MultiColored< OperatorType, VectorType, ValueType >.
|
protectedvirtualinherited |
Insert the solution with backward permutation (from x_block_[])
|
virtualinherited |
Move all the data (i.e. move the solver) to the accelerator.
Referenced by main(), mexFunction(), and paralution_fortran_solve().
|
protectedvirtualinherited |
Move all local data to the accelerator.
Implements paralution::Solver< OperatorType, VectorType, ValueType >.
|
virtualinherited |
Move all the data (i.e. move the solver) to the host.
|
protectedvirtualinherited |
Move all local data to the host.
Implements paralution::Solver< OperatorType, VectorType, ValueType >.
|
protectedvirtualinherited |
Permute the preconditioning matrix.
|
protectedvirtual |
Post-analyzing if the preconditioner is not decomposed.
Reimplemented from paralution::MultiColored< OperatorType, VectorType, ValueType >.
|
virtual |
Print information about the solver.
Implements paralution::Solver< OperatorType, VectorType, ValueType >.
|
protectedvirtualinherited |
Print ending msg of the solver.
Implements paralution::Solver< OperatorType, VectorType, ValueType >.
|
protectedvirtualinherited |
Print starting msg of the solver.
Implements paralution::Solver< OperatorType, VectorType, ValueType >.
|
virtual |
Rebuild only with numerical computation (no allocation or data structure computation)
Reimplemented from paralution::Solver< OperatorType, VectorType, ValueType >.
|
virtualinherited |
Reset the operator; see ReBuildNumeric.
Reimplemented in paralution::SGS< OperatorType, VectorType, ValueType >, paralution::GS< OperatorType, VectorType, ValueType >, and paralution::Jacobi< OperatorType, VectorType, ValueType >.
Referenced by main().
|
virtual |
Initialize a multi-colored ILU(p,p+1) preconditioner.
Referenced by main(), paralution_fortran_solve(), and paralution_solve().
|
virtual |
Initialize a multi-colored ILU(p,q) preconditioner; level==true will perform the factorization with levels; level==false will perform the factorization only on the power(q)-pattern.
|
virtualinherited |
Set if the preconditioner should be decomposed or not.
|
inherited |
Set the Operator of the solver.
Referenced by paralution::BaseAMG< OperatorType, VectorType, ValueType >::Build(), paralution::MultiElimination< OperatorType, VectorType, ValueType >::Build(), paralution::MultiColored< OperatorType, VectorType, ValueType >::Decompose_(), main(), mexFunction(), paralution_fortran_solve(), and paralution_solve().
|
virtualinherited |
Set a specific matrix type of the decomposed block matrices; if not set, CSR matrix format will be used.
Referenced by paralution::AMG< OperatorType, VectorType, ValueType >::BuildSmoothers(), main(), and paralution_fortran_solve().
|
virtualinherited |
Solve Operator x = rhs.
Implements paralution::Solver< OperatorType, VectorType, ValueType >.
|
protectedvirtual |
Solve directly without block decomposition.
Implements paralution::MultiColored< OperatorType, VectorType, ValueType >.
|
protectedvirtual |
Solve the diagonal part (only for SGS)
Implements paralution::MultiColored< OperatorType, VectorType, ValueType >.
|
protectedvirtual |
Solve the lower-triangular (left) matrix.
Implements paralution::MultiColored< OperatorType, VectorType, ValueType >.
|
protectedvirtual |
Solve the upper-trianguler (right) matrix.
Implements paralution::MultiColored< OperatorType, VectorType, ValueType >.
|
virtualinherited |
Solve Operator x = rhs; but set first the init x = 0.
Reimplemented from paralution::Solver< OperatorType, VectorType, ValueType >.
|
virtualinherited |
Provide verbose output of the solver: verb == 0 no output verb == 1 print info about the solver (start,end); verb == 2 print (iter, residual) via iteration control;.
Reimplemented in paralution::DirectLinearSolver< OperatorType, VectorType, ValueType >, paralution::IterativeLinearSolver< OperatorType, VectorType, ValueType >, paralution::IterativeLinearSolver< OperatorTypeL, VectorTypeL, ValueTypeL >, paralution::IterativeLinearSolver< OperatorTypeH, VectorTypeH, ValueTypeH >, and paralution::SIRA< OperatorTypeH, VectorTypeH, ValueTypeH, OperatorTypeL, VectorTypeL, ValueTypeL >.
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
Flag == true after building the solver (e.g. Build())
|
protectedinherited |
Decompose the preconditioner into blocks or not.
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protected |
|
protected |
|
protectedinherited |
|
protectedinherited |
Pointer to the operator.
|
protectedinherited |
Keep the precond matrix in CSR or not.
|
protected |
|
protectedinherited |
Permutation vector (used if the solver performs permutation/re-ordering techniques)
|
protectedinherited |
Pointer to the defined preconditioner.
|
protectedinherited |
Precond matrix format.
|
protectedinherited |
|
protectedinherited |
|
protected |
|
protectedinherited |
Verbose flag verb == 0 no output verb == 1 print info about the solver (start,end); verb == 2 print (iter, residual) via iteration control;.
|
protectedinherited |
|
protectedinherited |