aFSAI

This class is used to manage the adaptive FSAI preconditioner for SPD. More…

#include "aFSAI.h"

Inherits from Preconditioner, MatrixProd

Public Functions

Name
aFSAI()
Constructs the object.
~aFSAI()
Deletes the object.
virtual iReg get_nrows() const
Retrieve the number of rows.
virtual iGlo Get_Globalnrows() const
Retrieve the global number of rows.
void print_OperStats(FILE * ofile)
Prints aFSAI info.
void print_Times(FILE * ofile)
Prints the times needed to compute the aFSAI.
void print_G(const string & filename) const
Prints the G part of the preconditioner.
void print_GT(const string & filename) const
Prints the GT part of the preconditioner.
virtual void Compute(DSMat &restrict Mat, DDMat *const restrict V0 =nullptr)
Computes the FSAI preconditioner in a distributed memory environment.
virtual void Prepare_MxV(const iReg nRHS)
Prepares the preconditioner application to a vector (DDMat).
virtual void UndoPrepare_MxV()
Undo the data structure necessary for MxV.
virtual void MxV(DDMat &restrict RHS, DDMat &restrict SOL, bool Barrier_flag)
Applies the preconditioner to a vetor (DDMat): prec(A9 * RHS = SOL.
virtual void MxM(DSMat &restrict Mat, DSMat &restrict PrecMat)
Applies the preconditioner to a matrix (DSMat).
virtual void fPrintAll_ASCII(const string & filename) const
Prints the Operator in ASCII format.
virtual void Set_Parameters(const void * params)
Sets the aFSAI parameters.
virtual iExt Get_nnz() const
Returns an estimate of the number of non-zeroes of the preconditioner application.
virtual iExt Get_FlopEst() const
Returns an estimate of the number of FLOPS needed to perform the preconditioner application.
void Set_TargetPower(const iReg restrict input_TargetPower)
Sets the requested power.
void Set_nstep(const iReg restrict input_nstep)
Sets the number of iterative steps.
void Set_step_size(const iReg restrict input_step_size)
Sets the number of terms added per step.
void Set_eps(const rExt restrict input_eps)
Sets the tolerance for the preconditioner.

Additional inherited members

Public Functions inherited from Preconditioner

Name
void copy_Preconditioner(Preconditioner & other)
Copy members.
Preconditioner & operator=(Preconditioner & other)
Copy operator.
virtual ~Preconditioner() =0
Deletes the object.

Public Functions inherited from MatrixProd

Name
void copy_MatrixProd(MatrixProd & other)
Copy members.
MatrixProd & operator=(MatrixProd & other)
Copy operator.
bool get_Prepared_flag() const
Get flag for MxV prepare.
iReg get_nRHS_prep() const
Get the number of rhs the matrix is prepared for.
virtual ~MatrixProd() =0
Deletes the object.

Protected Attributes inherited from MatrixProd

Name
bool Prepared_flag
flag for MxV prepare.
iReg nRHS_prep
number of rhs the matrix is prepared for

Detailed Description

class aFSAI;

This class is used to manage the adaptive FSAI preconditioner for SPD.

class aFSAI.

Public Functions Documentation

function aFSAI

aFSAI()

Constructs the object.

function ~aFSAI

~aFSAI()

Deletes the object.

function get_nrows

inline virtual iReg get_nrows() const

Retrieve the number of rows.

Reimplements: Preconditioner::get_nrows

function Get_Globalnrows

virtual iGlo Get_Globalnrows() const

Retrieve the global number of rows.

Reimplements: Preconditioner::Get_Globalnrows

function print_OperStats

void print_OperStats(
    FILE * ofile
)

Prints aFSAI info.

Parameters:

  • *ofile output file.

function print_Times

void print_Times(
    FILE * ofile
)

Prints the times needed to compute the aFSAI.

Parameters:

  • *ofile output file.

function print_G

inline void print_G(
    const string & filename
) const

Prints the G part of the preconditioner.

function print_GT

inline void print_GT(
    const string & filename
) const

Prints the GT part of the preconditioner.

function Compute

virtual void Compute(
    DSMat &__restrict__ Mat,
    DDMat *const __restrict__ V0 =nullptr
)

Computes the FSAI preconditioner in a distributed memory environment.

Parameters:

  • Mat system matrix.

Reimplements: Preconditioner::Compute

function Prepare_MxV

virtual void Prepare_MxV(
    const iReg nRHS
)

Prepares the preconditioner application to a vector (DDMat).

Parameters:

  • nRHS number of Right Hand Sides.

Reimplements: Preconditioner::Prepare_MxV

function UndoPrepare_MxV

virtual void UndoPrepare_MxV()

Undo the data structure necessary for MxV.

Reimplements: Preconditioner::UndoPrepare_MxV

function MxV

virtual void MxV(
    DDMat &__restrict__ RHS,
    DDMat &__restrict__ SOL,
    bool Barrier_flag
)

Applies the preconditioner to a vetor (DDMat): prec(A9 * RHS = SOL.

Parameters:

  • RHS vector that multiplies the Preconditioner.
  • SOL vector where result is stored.
  • Barrier_flag if true global Barrier is called before return.

Reimplements: Preconditioner::MxV

function MxM

virtual void MxM(
    DSMat &__restrict__ Mat,
    DSMat &__restrict__ PrecMat
)

Applies the preconditioner to a matrix (DSMat).

Parameters:

  • Mat system matrix.
  • PrecMat.

Reimplements: Preconditioner::MxM

function fPrintAll_ASCII

inline virtual void fPrintAll_ASCII(
    const string & filename
) const

Prints the Operator in ASCII format.

Reimplements: Preconditioner::fPrintAll_ASCII

function Set_Parameters

virtual void Set_Parameters(
    const void * params
)

Sets the aFSAI parameters.

Parameters:

  • params input parameters.

Reimplements: Preconditioner::Set_Parameters

function Get_nnz

inline virtual iExt Get_nnz() const

Returns an estimate of the number of non-zeroes of the preconditioner application.

Reimplements: Preconditioner::Get_nnz

function Get_FlopEst

inline virtual iExt Get_FlopEst() const

Returns an estimate of the number of FLOPS needed to perform the preconditioner application.

Reimplements: Preconditioner::Get_FlopEst

function Set_TargetPower

inline void Set_TargetPower(
    const iReg __restrict__ input_TargetPower
)

Sets the requested power.

function Set_nstep

inline void Set_nstep(
    const iReg __restrict__ input_nstep
)

Sets the number of iterative steps.

function Set_step_size

inline void Set_step_size(
    const iReg __restrict__ input_step_size
)

Sets the number of terms added per step.

function Set_eps

inline void Set_eps(
    const rExt __restrict__ input_eps
)

Sets the tolerance for the preconditioner.


Updated on 12 February 2021 at 11:59:50 CET