1 #ifndef PARALUTION_PRECONDITIONER_AI_HPP_
2 #define PARALUTION_PRECONDITIONER_AI_HPP_
4 #include "../solver.hpp"
13 template <
class OperatorType,
class VectorType,
typename ValueType>
21 virtual void Print(
void)
const;
22 virtual void Solve(
const VectorType &rhs,
24 virtual void Set(
const int p,
const ValueType lambda_min,
const ValueType lambda_max);
25 virtual void Build(
void);
26 virtual void Clear(
void);
44 template <
class OperatorType,
class VectorType,
typename ValueType>
52 virtual void Print(
void)
const;
53 virtual void Solve(
const VectorType &rhs, VectorType *
x);
57 virtual void Set(
const OperatorType &pattern);
58 virtual void Build(
void);
59 virtual void Clear(
void);
87 template <
class OperatorType,
class VectorType,
typename ValueType>
95 virtual void Print(
void)
const;
96 virtual void Solve(
const VectorType &rhs, VectorType *
x);
97 virtual void Build(
void);
98 virtual void Clear(
void);
122 template <
class OperatorType,
class VectorType,
typename ValueType>
130 virtual void Print(
void)
const;
131 virtual void Set(
const bool imp);
132 virtual void Solve(
const VectorType &rhs, VectorType *
x);
133 virtual void Build(
void);
134 virtual void Clear(
void);
167 #endif // PARALUTION_PRECONDITIONER_AI_HPP_
bool impl_
implicit (true) or explicit (false) computation
Definition: preconditioner_ai.hpp:160
Factorized Approximate Inverse preconditioner.
Definition: preconditioner_ai.hpp:45
virtual void MoveToHostLocalData_(void)
Move all local data to the host.
Definition: preconditioner_ai.cpp:488
virtual void Set(const int power)
Initialize the FSAI with powered system matrix sparsity pattern.
Definition: preconditioner_ai.cpp:251
virtual void Print(void) const
Print information about the solver.
Definition: preconditioner_ai.cpp:419
bool op_mat_format_
Keep the precond matrix in CSR or not.
Definition: preconditioner_ai.hpp:80
virtual void SetPrecondMatrixFormat(const unsigned int mat_format)
Definition: preconditioner_ai.cpp:337
VectorType tmp2_
Definition: preconditioner_ai.hpp:153
virtual void Set(const bool imp)
Definition: preconditioner_ai.cpp:568
virtual void MoveToHostLocalData_(void)
Move all local data to the host.
Definition: preconditioner_ai.cpp:708
virtual void Clear(void)
Clear (free all local data) the solver.
Definition: preconditioner_ai.cpp:156
Approximate Inverse - Chebyshev preconditioner see IEEE TRANSACTIONS ON POWER SYSTEMS, VOL. 18, NO. 4, NOVEMBER 2003; A New Preconditioned Conjugate Gradient Power Flow - Hasan Dag, Adam Semlyen.
Definition: preconditioner_ai.hpp:14
VectorType Dinv_
Definition: preconditioner_ai.hpp:150
ValueType lambda_min_
Definition: preconditioner_ai.hpp:39
virtual void Print(void) const
Print information about the solver.
Definition: preconditioner_ai.cpp:39
TNS()
Definition: preconditioner_ai.cpp:528
virtual void Build(void)
Build the solver (data allocation, structure computation, numerical computation)
Definition: preconditioner_ai.cpp:577
OperatorType TNS_
Definition: preconditioner_ai.hpp:149
virtual void Set(const int p, const ValueType lambda_min, const ValueType lambda_max)
Definition: preconditioner_ai.cpp:50
VectorType tmp1_
Definition: preconditioner_ai.hpp:152
virtual ~FSAI()
Definition: preconditioner_ai.cpp:227
virtual void MoveToHostLocalData_(void)
Move all local data to the host.
Definition: preconditioner_ai.cpp:167
OperatorType L_
Definition: preconditioner_ai.hpp:147
SParse Approximate Inverse preconditioner.
Definition: preconditioner_ai.hpp:88
virtual ~SPAI()
Definition: preconditioner_ai.cpp:408
Truncated Neumann Series (TNS) Preconditioner.
Definition: preconditioner_ai.hpp:123
OperatorType FSAI_LT_
Definition: preconditioner_ai.hpp:71
virtual void Solve(const VectorType &rhs, VectorType *x)
Solve Operator x = rhs.
Definition: preconditioner_ai.cpp:739
VectorType t_
Definition: preconditioner_ai.hpp:72
virtual void Solve(const VectorType &rhs, VectorType *x)
Solve Operator x = rhs.
Definition: preconditioner_ai.cpp:189
virtual void MoveToAcceleratorLocalData_(void)
Move all local data to the accelerator.
Definition: preconditioner_ai.cpp:178
virtual void Solve(const VectorType &rhs, VectorType *x)
Solve Operator x = rhs.
Definition: preconditioner_ai.cpp:377
bool op_mat_format_
Keep the precond matrix in CSR or not.
Definition: preconditioner_ai.hpp:156
void power(const int mic_dev, const int size, const double val, ValueType *vec)
Definition: mic_vector_kernel.cpp:241
virtual void MoveToAcceleratorLocalData_(void)
Move all local data to the accelerator.
Definition: preconditioner_ai.cpp:363
OperatorType AIChebyshev_
Definition: preconditioner_ai.hpp:37
Base preconditioner class.
Definition: preconditioner.hpp:10
int p_
Definition: preconditioner_ai.hpp:38
virtual void MoveToHostLocalData_(void)
Move all local data to the host.
Definition: preconditioner_ai.cpp:349
virtual void Print(void) const
Print information about the solver.
Definition: preconditioner_ai.cpp:238
OperatorType FSAI_L_
Definition: preconditioner_ai.hpp:70
SPAI()
Definition: preconditioner_ai.cpp:397
bool op_mat_format_
Keep the precond matrix in CSR or not.
Definition: preconditioner_ai.hpp:114
virtual ~AIChebyshev()
Definition: preconditioner_ai.cpp:29
virtual void Solve(const VectorType &rhs, VectorType *x)
Solve Operator x = rhs.
Definition: preconditioner_ai.cpp:509
virtual void SetPrecondMatrixFormat(const unsigned int mat_format)
Definition: preconditioner_ai.cpp:477
Definition: backend_manager.cpp:43
int matrix_power_
Definition: preconditioner_ai.hpp:74
unsigned int precond_mat_format_
Precond matrix format.
Definition: preconditioner_ai.hpp:116
const IndexType const IndexType const IndexType const ValueType const ValueType const ValueType * x
Definition: cuda_kernels_coo.hpp:91
unsigned int precond_mat_format_
Precond matrix format.
Definition: preconditioner_ai.hpp:82
virtual void Clear(void)
Clear (free all local data) the solver.
Definition: preconditioner_ai.cpp:310
virtual void Build(void)
Build the solver (data allocation, structure computation, numerical computation)
Definition: preconditioner_ai.cpp:278
OperatorType LT_
Definition: preconditioner_ai.hpp:148
virtual void Print(void) const
Print information about the solver.
Definition: preconditioner_ai.cpp:552
OperatorType SPAI_
Definition: preconditioner_ai.hpp:111
virtual ~TNS()
Definition: preconditioner_ai.cpp:541
AIChebyshev()
Definition: preconditioner_ai.cpp:17
virtual void Build(void)
Build the solver (data allocation, structure computation, numerical computation)
Definition: preconditioner_ai.cpp:430
virtual void Build(void)
Build the solver (data allocation, structure computation, numerical computation)
Definition: preconditioner_ai.cpp:69
unsigned int precond_mat_format_
Precond matrix format.
Definition: preconditioner_ai.hpp:158
virtual void MoveToAcceleratorLocalData_(void)
Move all local data to the accelerator.
Definition: preconditioner_ai.cpp:498
ValueType lambda_max_
Definition: preconditioner_ai.hpp:39
virtual void Clear(void)
Clear (free all local data) the solver.
Definition: preconditioner_ai.cpp:458
virtual void MoveToAcceleratorLocalData_(void)
Move all local data to the accelerator.
Definition: preconditioner_ai.cpp:723
virtual void SetPrecondMatrixFormat(const unsigned int mat_format)
Definition: preconditioner_ai.cpp:697
bool external_pattern_
Definition: preconditioner_ai.hpp:76
FSAI()
Definition: preconditioner_ai.cpp:211
virtual void Clear(void)
Clear (free all local data) the solver.
Definition: preconditioner_ai.cpp:671
const OperatorType * matrix_pattern_
Definition: preconditioner_ai.hpp:77