FEAT 3
Finite Element Analysis Toolbox
Loading...
Searching...
No Matches
FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ > Class Template Referenceabstract

Front-end wrapper class for (parallel) third-party direct sparse solvers. More...

#include <direct_sparse_solver.hpp>

Inheritance diagram for FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >:
FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ > FEAT::Solver::SolverBase< Vector_ > FEAT::Solver::SolverBase< Vector_ >

Public Types

typedef ADPSolverBase< Matrix_, Filter_ > BaseClass
 our base class More...
 
typedef MatrixType::DataType DataType
 our internal data type More...
 
typedef BaseClass::FilterType FilterType
 our (global or local) system filter type More...
 
typedef MatrixType::IndexType IndexType
 our internal index type More...
 
typedef BaseClass::MatrixType MatrixType
 our (global or local) system matrix type More...
 
typedef BaseClass::VectorType VectorType
 our (global or local) system vector type More...
 

Public Member Functions

 DirectSparseSolver (const MatrixType &matrix, const FilterType &filter)
 Creates a new DirectSparseSolver object for the given system. More...
 
virtual ~DirectSparseSolver ()
 virtual destructor More...
 
virtual Status apply (Vector_ &vec_cor, const Vector_ &vec_def)=0
 Solver application method. More...
 
virtual Status apply (VectorType &vec_cor, const VectorType &vec_def) override
 Solves a linear system with the factorized system matrix. More...
 
void clear_allowed_backends ()
 Clears the deque of allowed backends. More...
 
virtual void done ()
 Finalization method. More...
 
virtual void done_numeric () override
 Releases the numeric initialization data of the solver. More...
 
virtual void done_symbolic () override
 Releases the symbolic factorization data and frees the backend. More...
 
const std::deque< DSSBackendget_allowed_backends () const
 Returns a reference to the deque of allowed backends. More...
 
DSSBackend get_selected_backend () const
 Returns the selected backend. More...
 
virtual void init ()
 Initialization method. More...
 
virtual void init_numeric () override
 Performs the numeric initialization of the solver. More...
 
virtual void init_symbolic () override
 Performs the symbolic initialization of the solver. More...
 
virtual String name () const override
 Returns the name of the solver. More...
 
void push_allowed_backend (const String &backend)
 Pushes a combination of allowed backends into the backend queue. More...
 
void push_allowed_backend (DSSBackend backend)
 Pushes a combination of allowed backends into the backend queue. More...
 
void push_allowed_backend_list (const std::deque< String > &backends)
 Pushes a deque of allowed backends into the backend queue. More...
 
void push_allowed_backend_list (const String &backends)
 Pushes a list of allowed backends into the backend queue. More...
 

Static Public Member Functions

static bool is_available (const MatrixType &matrix, const FilterType &filter)
 Checks whether a suitable backend for the given matrix and filter. More...
 

Static Public Attributes

static constexpr bool have_backend_cudss = DSS::have_cudss
 specifies whether the cuDSS solver backend is available More...
 
static constexpr bool have_backend_global = DSS::have_backend_global
 specifies whether at least one backend for global systems is available More...
 
static constexpr bool have_backend_local = DSS::have_backend_local
 specifies whether at least one backend for local systems is available More...
 
static constexpr bool have_backend_mkldss = DSS::have_mkldss
 specifies whether the MKL-DSS solver backend is available More...
 
static constexpr bool have_backend_mumps = DSS::have_mumps
 specifies whether the MUMPS solver backend is available More...
 
static constexpr bool have_backend_superlu = DSS::have_superlu
 specifies whether the SuperLU solver backend is available More...
 
static constexpr bool have_backend_umfpack = DSS::have_umfpack
 specifies whether the UMFPACK solver backend is available More...
 

Protected Member Functions

template<typename DTV_ >
void _download_vector (LocalVectorType &vector, const DTV_ *val)
 Downloads the ADP vector values from the given array. More...
 
template<typename DTV_ >
void _download_vector (VectorType &vector, const DTV_ *val)
 Downloads the ADP vector values from the given array. More...
 
template<typename DTV_ , typename RPT_ , typename CIT_ >
void _filter_mat (DTV_ *, const RPT_ *, const CIT_ *, const Global::MeanFilter< DataType, IndexType > &filter)
 auxiliary function: filters the local ADP matrix More...
 
template<typename DTV_ , typename RPT_ , typename CIT_ >
void _filter_mat (DTV_ *, const RPT_ *, const CIT_ *, const LAFEM::MeanFilter< DataType, IndexType > &filter)
 auxiliary function: filters the local ADP matrix More...
 
template<typename DTV_ , typename RPT_ , typename CIT_ >
void _filter_mat (DTV_ *, const RPT_ *, const CIT_ *, const LAFEM::NoneFilter< DataType, IndexType > &)
 auxiliary function: filters the local ADP matrix More...
 
template<typename DTV_ , typename RPT_ , typename CIT_ , typename First_ >
void _filter_mat (DTV_ *val, const RPT_ *row_ptr, const CIT_ *col_idx, const LAFEM::FilterChain< First_ > &filter)
 auxiliary function: filters the local ADP matrix More...
 
template<typename DTV_ , typename RPT_ , typename CIT_ , typename First_ , typename... Rest_>
void _filter_mat (DTV_ *val, const RPT_ *row_ptr, const CIT_ *col_idx, const LAFEM::FilterChain< First_, Rest_... > &filter)
 auxiliary function: filters the local ADP matrix More...
 
template<typename DTV_ , typename RPT_ , typename CIT_ , typename SubFilter_ >
void _filter_mat (DTV_ *val, const RPT_ *row_ptr, const CIT_ *col_idx, const LAFEM::FilterSequence< SubFilter_ > &filter)
 auxiliary function: filters the local ADP matrix More...
 
template<typename DTV_ , typename RPT_ , typename CIT_ >
void _filter_mat (DTV_ *val, const RPT_ *row_ptr, const CIT_ *col_idx, const LAFEM::UnitFilter< DataType, IndexType > &filter)
 auxiliary function: filters the local ADP matrix More...
 
String _get_adp_block_information () const
 
String _get_adp_block_information () const
 
Index _get_adp_matrix_num_cols () const
 
Index _get_adp_matrix_num_cols () const
 
Index _get_adp_matrix_num_nzes () const
 
Index _get_adp_matrix_num_nzes () const
 
Index _get_adp_matrix_num_rows () const
 
Index _get_adp_matrix_num_rows () const
 
Index _get_adp_vector_size () const
 
Index _get_adp_vector_size () const
 
const Dist::Comm_get_comm () const
 
const Dist::Comm_get_comm () const
 
Index _get_global_dof_offset () const
 
Index _get_global_dof_offset () const
 
Index _get_num_global_dofs () const
 
Index _get_num_global_dofs () const
 
Index _get_num_global_nonzeros () const
 
Index _get_num_global_nonzeros () const
 
Index _get_num_owned_dofs () const
 
Index _get_num_owned_dofs () const
 
template<typename DTV_ , typename RPT_ , typename CIT_ >
void _upload_numeric (DTV_ *val, const RPT_ *row_ptr, const CIT_ *col_idx)
 Uploads the (filtered) ADP matrix values to the given array. More...
 
template<typename DTV_ , typename RPT_ , typename CIT_ >
void _upload_numeric (DTV_ *val, const RPT_ *row_ptr, const CIT_ *col_idx)
 Uploads the (filtered) ADP matrix values to the given array. More...
 
template<typename RPT_ , typename CIT_ >
void _upload_symbolic (RPT_ *row_ptr, CIT_ *col_idx)
 Uploads the ADP matrix structure to the given arrays. More...
 
template<typename RPT_ , typename CIT_ >
void _upload_symbolic (RPT_ *row_ptr, CIT_ *col_idx)
 Uploads the ADP matrix structure to the given arrays. More...
 
template<typename DTV_ >
void _upload_vector (DTV_ *val, const LocalVectorType &vector)
 Uploads the ADP vector values to the given array. More...
 
template<typename DTV_ >
void _upload_vector (DTV_ *val, const VectorType &vector)
 Uploads the ADP vector values to the given array. More...
 

Protected Attributes

Dist::Comm _comm_self
 self-communicator object More...
 
const FilterType_system_filter
 the system filter More...
 
const MatrixType_system_matrix
 the system matrix More...
 

Private Member Functions

bool _create_core_cudss ()
 Tries to create a cuDSS backend core and returns true, if it succeeded. More...
 
bool _create_core_mkldss ()
 Tries to create a MKL-DSS backend core and returns true, if it succeeded. More...
 
bool _create_core_mumps ()
 Tries to create a MUMPS backend core and returns true, if it succeeded. More...
 
bool _create_core_superlu ()
 Tries to create a SuperLU backend core and returns true, if it succeeded. More...
 
bool _create_core_umfpack ()
 Tries to create an UMFPACK backend core and returns true, if it succeeded. More...
 

Private Attributes

std::deque< DSSBackend_allowed_backends
 backends that the user allowed us to use More...
 
void * _core_cudss
 Nvidia cuDSS core. More...
 
void * _core_mkldss
 Intel MKLDSS core. More...
 
void * _core_mumps
 MUMPS core. More...
 
void * _core_superlu
 SuperLU core. More...
 
void * _core_umfpack
 UMFPACK core. More...
 
PreferredBackend _preferred_backend
 preferred backend of runtime at time of object creation More...
 

Detailed Description

template<typename Matrix_, typename Filter_>
class FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >

Front-end wrapper class for (parallel) third-party direct sparse solvers.

This class acts as a unified front-end that enables the use of various direct sparse solvers implemented in third-party libraries. This class derives from the ADPSolverBase class and can therefore be applied to any type of system that is supported by the ADPSolverBase class.

In particular, this class currently offers the following backends:

  • cuDSS: A MPI-parallel direct solver for CUDA, which utilizes the GPU to solve the system. Obviously requires CUDA and the cuDSS library and can only utilize a single GPU per MPI process.
  • MKL-DSS: A MPI-parallel direct solver, which is part of the Intel oneAPI MKL libraries, which is typically the best choice if the solver is applied on multiple processes.
  • MUMPS: A MPI-parallel direct solver written in Fortran.
  • SuperLU: A MPI-parallel direct solver implemented in the SuperLU_Dist library. This solver is usually slower that UMFPACK in the single-process case and slower that MKL-DSS in the multi-process case, so it serves as a fallback if the other ones are not available or not suitable.
  • UMFPACK: A sequential direct solver, which is typically the best choice if the solver is applied only on a single MPI process or in sequential builds.
Attention
If you intend to use the cuDSS library in combination with MPI in "multi-node-multi-gpu" mode, then you need to ensure that the CUDSS_COMM_LIB environment variable is set to the absolute path of cuDSS's libcudss_commlayer_openmpi.so library, because the code will otherwise crash with obscure illegal memory access errors when trying to run the solver with more than 1 MPI process! See https://docs.nvidia.com/cuda/cudss/advanced_features.html#multi-gpu-multi-node-mgmn-mode for more details.
Note
Technically, the MKL-DSS backend includes two different backends, namely a backend for the Intel oneAPI MKL "Direct Sparse Solver" (aka "DSS") solver for non-MPI builds, as well as for the Intel oneAPI MKL "Parallel Direct Sparse Solver for Clusters" for MPI builds. The reason why both backends are included in this wrapper class is that the latter parallel solver backend cannot be used in non-MPI builds and trying to do so would result in crashes due to invalid MPI calls from within the library, therefore we also had to include the "DSS" backend for non-MPI builds. To avoid confusion, this wrapper always denotes the MKL backend as "MKL-DSS" and does not distinguish between the two MKL backends to avoid user confusion.

Backend Selection Process:
The actual backend selection process is performed during the execution of the init_symbolic() method and the selection process depends on three main factors:

  • which solver backend third-party libraries are available
  • whether the user has specified (a deque of) allowed backends and, if so, what the user has actually specified
  • the value of Backend::get_preferred_backend() at the time of the construction of this object, i.e. at the time of its constructor call

Independently of all other factors, a backend can only be selected if its corresponding third-party library is available for obvious reasons. Then, there are two main scenarios:

Scenario A: If the user specified a list of allowed backend (combinations) by calling one of the push_allowed_backend_list() or push_allowed_backends() functions, then the algorithm will start with the first allowed backend (combination) from the list and it will check if any of the allowed backends in the combination is available and, if so, it will select that backend. If the backend combination contains more than a single allowed backend, the algorithm will check them in the following order:

  1. cuDSS
  2. MKL-DSS
  3. MUMPS
  4. UMFPACK
  5. SuperLU

If none of the backends in a given backend combination is available, the algorithm continues with the next combination in the list until it has either found a suitable backend or until it reaches the end of the list, in which case the init_symbolic() function throws an instance of the DSSBackendNotFoundException exception to indicate that it failed to find a suitable backend that meets the users list of allowed backends.

As a simple example, assume the user specified $"mkldss|superlu cudss umfpack" as a list of allowed backend combinations, then the algorithm will first try to create the MKL-DSS or the SuperLU backends and, if none of the two are available, it will then try to create the cuDSS backend and, if that isn't available either, it will finally try to create the UMFPACK backend.

Scenario B: If the user did not specify any allowed backend combinations, then the algorithm will check which PreferredBackend was selected at the time that the DirectSparseSolver object was constructed and it will perform the following steps in the following order

  1. If the preferred backend was PreferredBackend::cuda, then the algorithm will try to create a cuDSS backend. If the cuDSS backend is not available – which could happen if FEAT was compiled with CUDA enabled but without the additional cuDSS third party library – a DSSBackendNotFoundException is thrown.
  2. If the preferred backend was PreferredBackend::mkl, then the algorithm will try to create a MKL-DSS backend. If the MKL-DSS backend is not available – which should never happen – a DSSBackendNotFoundException is thrown.
  3. If the preferred backend is any other than the ones listed above, then the algorithm will try to select a suitable backend by trying out all available backends in the following order:
    1. cuDSS
    2. MKL-DSS
    3. MUMPS
    4. UMFPACK
    5. SuperLU
  4. If none of the above backends are available, it throws a DSSBackendNotFoundException.

Note: If you want to skip the check of the preferred backend and you just want the algorithm to select any suitable backend, then you can simply push DSSBackend::all as the allowed backend.

Todo:
check for unsupported filters in is_available()
Author
Peter Zajac

Definition at line 448 of file direct_sparse_solver.hpp.

Member Typedef Documentation

◆ BaseClass

template<typename Matrix_ , typename Filter_ >
typedef ADPSolverBase<Matrix_, Filter_> FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::BaseClass

our base class

Definition at line 453 of file direct_sparse_solver.hpp.

◆ DataType

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
typedef MatrixType::DataType FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::DataType
inherited

our internal data type

Definition at line 783 of file adp_solver_base.hpp.

◆ FilterType

template<typename Matrix_ , typename Filter_ >
typedef BaseClass::FilterType FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::FilterType

our (global or local) system filter type

Definition at line 459 of file direct_sparse_solver.hpp.

◆ IndexType

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
typedef MatrixType::IndexType FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::IndexType
inherited

our internal index type

Definition at line 785 of file adp_solver_base.hpp.

◆ MatrixType

template<typename Matrix_ , typename Filter_ >
typedef BaseClass::MatrixType FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::MatrixType

our (global or local) system matrix type

Definition at line 455 of file direct_sparse_solver.hpp.

◆ VectorType

template<typename Matrix_ , typename Filter_ >
typedef BaseClass::VectorType FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::VectorType

our (global or local) system vector type

Definition at line 457 of file direct_sparse_solver.hpp.

Constructor & Destructor Documentation

◆ DirectSparseSolver()

template<typename Matrix_ , typename Filter_ >
FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::DirectSparseSolver ( const MatrixType matrix,
const FilterType filter 
)
inlineexplicit

Creates a new DirectSparseSolver object for the given system.

Parameters
[in]matrixA resident reference to the system matrix.
[in]filterA resident reference to the system filter.
Note
This constructor queries the result of Backend::get_preferred_backend(), which is used during the symbolic initialization phase to determine which of the available solver backends to choose if the user did not manually specify a set of allowed backends.

Definition at line 506 of file direct_sparse_solver.hpp.

◆ ~DirectSparseSolver()

template<typename Matrix_ , typename Filter_ >
virtual FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::~DirectSparseSolver ( )
inlinevirtual

virtual destructor

Definition at line 519 of file direct_sparse_solver.hpp.

Member Function Documentation

◆ _create_core_cudss()

◆ _create_core_mkldss()

◆ _create_core_mumps()

◆ _create_core_superlu()

◆ _create_core_umfpack()

◆ _download_vector() [1/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_download_vector ( LocalVectorType &  vector,
const DTV_ *  val 
)
protectedinherited

Downloads the ADP vector values from the given array.

Parameters
[in,out]vectorA transient reference to the local vector that receives the downloaded ADP value array. It is assumed to be allocated to the correct size, but its contents on entry are ignored.
[in]valA transient pointer to an array of length _get_adp_vector_size() that contains the ADP values that are to be downloaded to the output vector given by vector.

Referenced by FEAT::Solver::TpetraSolverBase< Matrix_, Filter_, SolverBase_ >::_download_cor(), FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::_download_cor(), and FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::apply().

◆ _download_vector() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_download_vector ( VectorType vector,
const DTV_ *  val 
)
inlineprotectedinherited

Downloads the ADP vector values from the given array.

Parameters
[in,out]vectorA transient reference to the local vector that receives the downloaded ADP value array. It is assumed to be allocated to the correct size, but its contents on entry are ignored.
[in]valA transient pointer to an array of length _get_adp_vector_size() that contains the ADP values that are to be downloaded to the output vector given by vector.

Definition at line 956 of file adp_solver_base.hpp.

◆ _filter_mat() [1/7]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ , typename RPT_ , typename CIT_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat ( DTV_ *  ,
const RPT_ *  ,
const CIT_ *  ,
const Global::MeanFilter< DataType, IndexType > &  filter 
)
inlineprotectedinherited

auxiliary function: filters the local ADP matrix

Definition at line 994 of file adp_solver_base.hpp.

References XASSERTM.

◆ _filter_mat() [2/7]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ , typename RPT_ , typename CIT_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat ( DTV_ *  ,
const RPT_ *  ,
const CIT_ *  ,
const LAFEM::MeanFilter< DataType, IndexType > &  filter 
)
inlineprotectedinherited

auxiliary function: filters the local ADP matrix

Definition at line 986 of file adp_solver_base.hpp.

References XASSERTM.

◆ _filter_mat() [3/7]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ , typename RPT_ , typename CIT_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat ( DTV_ *  ,
const RPT_ *  ,
const CIT_ *  ,
const LAFEM::NoneFilter< DataType, IndexType > &   
)
inlineprotectedinherited

◆ _filter_mat() [4/7]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ , typename RPT_ , typename CIT_ , typename First_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat ( DTV_ *  val,
const RPT_ *  row_ptr,
const CIT_ *  col_idx,
const LAFEM::FilterChain< First_ > &  filter 
)
inlineprotectedinherited

auxiliary function: filters the local ADP matrix

Definition at line 1020 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat().

◆ _filter_mat() [5/7]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ , typename RPT_ , typename CIT_ , typename First_ , typename... Rest_>
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat ( DTV_ *  val,
const RPT_ *  row_ptr,
const CIT_ *  col_idx,
const LAFEM::FilterChain< First_, Rest_... > &  filter 
)
inlineprotectedinherited

auxiliary function: filters the local ADP matrix

Definition at line 1011 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat().

◆ _filter_mat() [6/7]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ , typename RPT_ , typename CIT_ , typename SubFilter_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat ( DTV_ *  val,
const RPT_ *  row_ptr,
const CIT_ *  col_idx,
const LAFEM::FilterSequence< SubFilter_ > &  filter 
)
inlineprotectedinherited

auxiliary function: filters the local ADP matrix

Definition at line 1002 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat().

◆ _filter_mat() [7/7]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ , typename RPT_ , typename CIT_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat ( DTV_ *  val,
const RPT_ *  row_ptr,
const CIT_ *  col_idx,
const LAFEM::UnitFilter< DataType, IndexType > &  filter 
)
inlineprotectedinherited

auxiliary function: filters the local ADP matrix

Definition at line 971 of file adp_solver_base.hpp.

◆ _get_adp_block_information() [1/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
String FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_block_information ( ) const
protectedinherited
Returns
The block information of the algebraic dof partitioning as an XML string.

◆ _get_adp_block_information() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
String FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_block_information ( ) const
inlineprotectedinherited
Returns
The block information of the algebraic dof partitioning as an XML string.

Definition at line 873 of file adp_solver_base.hpp.

References XABORTM.

◆ _get_adp_matrix_num_cols() [1/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_matrix_num_cols ( ) const
protectedinherited
Returns
The number of columns of the local ADP matrix; equal to _get_num_global_dofs()

◆ _get_adp_matrix_num_cols() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_matrix_num_cols ( ) const
inlineprotectedinherited
Returns
The number of columns of the local ADP matrix; equal to _get_num_global_dofs()

Definition at line 837 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.

◆ _get_adp_matrix_num_nzes() [1/2]

◆ _get_adp_matrix_num_nzes() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_matrix_num_nzes ( ) const
inlineprotectedinherited
Returns
The number of nonzero entries of the local ADP matrix

Definition at line 843 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.

◆ _get_adp_matrix_num_rows() [1/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_matrix_num_rows ( ) const
protectedinherited
Returns
The number of rows of the local ADP matrix; equal to _get_num_owned_dofs()

◆ _get_adp_matrix_num_rows() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_matrix_num_rows ( ) const
inlineprotectedinherited
Returns
The number of rows of the local ADP matrix; equal to _get_num_owned_dofs()

Definition at line 831 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.

◆ _get_adp_vector_size() [1/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_vector_size ( ) const
protectedinherited

◆ _get_adp_vector_size() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_vector_size ( ) const
inlineprotectedinherited
Returns
The size of the local ADP vector; equal to _get_num_owned_dofs()

Definition at line 825 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.

◆ _get_comm() [1/2]

◆ _get_comm() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
const Dist::Comm * FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_comm ( ) const
inlineprotectedinherited
Returns
A pointer to the underlying (self) communicator

Definition at line 819 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_comm_self.

◆ _get_global_dof_offset() [1/2]

◆ _get_global_dof_offset() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_global_dof_offset ( ) const
inlineprotectedinherited
Returns
The index of the first global DOF owned by this process

Definition at line 867 of file adp_solver_base.hpp.

◆ _get_num_global_dofs() [1/2]

◆ _get_num_global_dofs() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_num_global_dofs ( ) const
inlineprotectedinherited
Returns
The total number of global DOFs on all processes

Definition at line 855 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.

◆ _get_num_global_nonzeros() [1/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_num_global_nonzeros ( ) const
protectedinherited

◆ _get_num_global_nonzeros() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_num_global_nonzeros ( ) const
inlineprotectedinherited
Returns
The total number of nonzero entries of the global ADP matrix

Definition at line 849 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.

◆ _get_num_owned_dofs() [1/2]

◆ _get_num_owned_dofs() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_num_owned_dofs ( ) const
inlineprotectedinherited
Returns
The number of global DOFs owned by this process

Definition at line 861 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.

◆ _upload_numeric() [1/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ , typename RPT_ , typename CIT_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_numeric ( DTV_ *  val,
const RPT_ *  row_ptr,
const CIT_ *  col_idx 
)
protectedinherited

Uploads the (filtered) ADP matrix values to the given array.

Parameters
[out]valA transient pointer to an array of length _get_adp_matrix_num_nzes() that receives the filtered matrix values of the local ADP matrix.
[in]row_ptrA transient pointer to the row-pointer array of the ADP matrix as returned by the _upload_symbolic() function.
[in]col_idxA transient pointer to the column-index array of the ADP matrix as returned by the _upload_symbolic() function.

Referenced by FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::init_numeric(), FEAT::Solver::TpetraSolverBase< Matrix_, Filter_, SolverBase_ >::init_numeric(), FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::init_numeric(), and FEAT::Solver::SuperLU< Matrix_, Filter_ >::init_numeric().

◆ _upload_numeric() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ , typename RPT_ , typename CIT_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_numeric ( DTV_ *  val,
const RPT_ *  row_ptr,
const CIT_ *  col_idx 
)
inlineprotectedinherited

Uploads the (filtered) ADP matrix values to the given array.

Parameters
[out]valA transient pointer to an array of length _get_adp_matrix_num_nzes() that receives the filtered matrix values of the local ADP matrix.
[in]row_ptrA transient pointer to the row-pointer array of the ADP matrix as returned by the _upload_symbolic() function.
[in]col_idxA transient pointer to the column-index array of the ADP matrix as returned by the _upload_symbolic() function.

Definition at line 917 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat(), and FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.

◆ _upload_symbolic() [1/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename RPT_ , typename CIT_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_symbolic ( RPT_ *  row_ptr,
CIT_ *  col_idx 
)
protectedinherited

◆ _upload_symbolic() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename RPT_ , typename CIT_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_symbolic ( RPT_ *  row_ptr,
CIT_ *  col_idx 
)
inlineprotectedinherited

Uploads the ADP matrix structure to the given arrays.

Parameters
[out]row_ptrA transient pointer to an array of length _get_adp_matrix_num_rows()+1 that receives the the row-pointer array of the ADP matrix.
[out]col_idxA transient pointer to an array of length _get_adp_matrix_num_nzes() that receives the column index array of the ADP matrix.

Definition at line 891 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.

◆ _upload_vector() [1/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_vector ( DTV_ *  val,
const LocalVectorType &  vector 
)
protectedinherited

Uploads the ADP vector values to the given array.

Parameters
[out]valA transient pointer to an array of length _get_adp_vector_size() that receives the local ADP values of the input vector given by vector.
[in]vectorA transient reference to the local vector that is to be uploaded to the ADP value array.

Referenced by FEAT::Solver::TpetraSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_def(), FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_def(), and FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::apply().

◆ _upload_vector() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_vector ( DTV_ *  val,
const VectorType vector 
)
inlineprotectedinherited

Uploads the ADP vector values to the given array.

Parameters
[out]valA transient pointer to an array of length _get_adp_vector_size() that receives the local ADP values of the input vector given by vector.
[in]vectorA transient reference to the local vector that is to be uploaded to the ADP value array.

Definition at line 939 of file adp_solver_base.hpp.

◆ apply() [1/2]

template<typename Vector_ >
virtual Status FEAT::Solver::SolverBase< Vector_ >::apply ( Vector_ &  vec_cor,
const Vector_ &  vec_def 
)
pure virtualinherited

Solver application method.

This method applies the solver represented by this object onto a given defect vector and returns the corresponding correction vector.

Note
Solvers which derive from the IterativeSolver base class also provide a correct() method which corrects an initial solution instead of starting with the null vector.
Parameters
[out]vec_corThe vector that shall receive the solution of the linear system. It is assumed to be allocated, but its numerical contents may be undefined upon calling this method.
[in]vec_defThe vector that represents the right-hand-side of the linear system to be solved.
Attention
vec_cor and vec_def must not refer to the same vector object!
Returns
A Status code that represents the status of the solution step.

Implemented in FEAT::Solver::SchwarzPrecond< Global::Vector< LocalVector_, Mirror_ >, Global::Filter< LocalFilter_, Mirror_ > >, FEAT::Solver::ScalePrecond< Vector_, Filter_ >, FEAT::Solver::DiagonalPrecond< Vector_, Filter_ >, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >, FEAT::Solver::NLOptPrecond< VectorType_, FilterType_ >, FEAT::Solver::AmaVanka< Matrix_, Filter_ >, FEAT::Solver::ConvertPrecond< VectorOuter_, VectorInner_ >, FEAT::Solver::ConvertPrecond< Global::Vector< LocalVectorOuter_, MirrorOuter_ >, Global::Vector< LocalVectorInner_, MirrorInner_ > >, and FEAT::Solver::BFBT< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >.

Referenced by FEAT::Solver::solve().

◆ apply() [2/2]

template<typename Matrix_ , typename Filter_ >
virtual Status FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::apply ( VectorType vec_cor,
const VectorType vec_def 
)
inlineoverridevirtual

Solves a linear system with the factorized system matrix.

Parameters
[in,out]vec_corA reference to the solution vector. The vector must be allocated to the correct length, but its initial contents are ignored.
[in]vec_defA reference to the right-hand-side of the linear system.

Definition at line 921 of file direct_sparse_solver.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_download_vector(), FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_vector(), FEAT::Solver::aborted, and FEAT::Solver::success.

◆ clear_allowed_backends()

template<typename Matrix_ , typename Filter_ >
void FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::clear_allowed_backends ( )
inline

Clears the deque of allowed backends.

Definition at line 653 of file direct_sparse_solver.hpp.

References FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_allowed_backends.

◆ done()

template<typename Vector_ >
virtual void FEAT::Solver::SolverBase< Vector_ >::done ( )
inlinevirtualinherited

Finalization method.

This function performs both the symbolic and numeric finalization, i.e. it simply performs

this->done_numeric();
this->done_symbolic();

Definition at line 283 of file base.hpp.

References FEAT::Solver::SolverBase< Vector_ >::done_numeric(), and FEAT::Solver::SolverBase< Vector_ >::done_symbolic().

◆ done_numeric()

template<typename Matrix_ , typename Filter_ >
virtual void FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::done_numeric ( )
inlineoverridevirtual

Releases the numeric initialization data of the solver.

Reimplemented from FEAT::Solver::SolverBase< Vector_ >.

Definition at line 894 of file direct_sparse_solver.hpp.

References FEAT::Solver::SolverBase< Vector_ >::done_numeric().

◆ done_symbolic()

template<typename Matrix_ , typename Filter_ >
virtual void FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::done_symbolic ( )
inlineoverridevirtual

Releases the symbolic factorization data and frees the backend.

Reimplemented from FEAT::Solver::SolverBase< Vector_ >.

Definition at line 786 of file direct_sparse_solver.hpp.

References FEAT::Solver::SolverBase< Vector_ >::done_symbolic().

◆ get_allowed_backends()

template<typename Matrix_ , typename Filter_ >
const std::deque< DSSBackend > FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::get_allowed_backends ( ) const
inline

Returns a reference to the deque of allowed backends.

Definition at line 659 of file direct_sparse_solver.hpp.

References FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_allowed_backends.

◆ get_selected_backend()

template<typename Matrix_ , typename Filter_ >
DSSBackend FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::get_selected_backend ( ) const
inline

Returns the selected backend.

Note that the backend is selected during the execution of init_symbolic() and therefore this function only returns the actually selected backend after init_symbolic() was called. This function always returns DSSBackend::none before the call to init_symbolic() and after the call to done_symbolic().

Definition at line 672 of file direct_sparse_solver.hpp.

References FEAT::Solver::cudss, FEAT::Solver::mkldss, FEAT::Solver::mumps, FEAT::Solver::none, FEAT::Solver::superlu, and FEAT::Solver::umfpack.

◆ init()

template<typename Vector_ >
virtual void FEAT::Solver::SolverBase< Vector_ >::init ( )
inlinevirtualinherited

Initialization method.

This function performs both the symbolic and numeric initialization, i.e. it simply performs

this->init_symbolic();
this->init_numeric();

Definition at line 268 of file base.hpp.

References FEAT::Solver::SolverBase< Vector_ >::init_numeric(), and FEAT::Solver::SolverBase< Vector_ >::init_symbolic().

◆ init_numeric()

template<typename Matrix_ , typename Filter_ >
virtual void FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::init_numeric ( )
inlineoverridevirtual

Performs the numeric initialization of the solver.

This function may throw instances of DirectSparseSolver exceptions if anything goes wrong.

Reimplemented from FEAT::Solver::SolverBase< Vector_ >.

Definition at line 831 of file direct_sparse_solver.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_numeric(), and FEAT::Solver::SolverBase< Vector_ >::init_numeric().

◆ init_symbolic()

◆ is_available()

template<typename Matrix_ , typename Filter_ >
static bool FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::is_available ( const MatrixType matrix,
const FilterType filter 
)
inlinestatic

Checks whether a suitable backend for the given matrix and filter.

Parameters
[in]matrixA transient reference to the system matrix
[in]filterA transient reference to the system filter
Returns
true if at least one direct sparse solver backend is available for this system, otherwise false

Definition at line 552 of file direct_sparse_solver.hpp.

References FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::have_backend_global, FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::have_backend_local, FEAT::Dist::Comm::size(), and XABORTM.

Referenced by FEAT::Solver::have_direct_sparse_solver().

◆ name()

◆ push_allowed_backend() [1/2]

template<typename Matrix_ , typename Filter_ >
void FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::push_allowed_backend ( const String backend)
inline

Pushes a combination of allowed backends into the backend queue.

Parameters
[in]backendA combination of backends separated by a vertical line character |

The following strings can be used to select the corresponding backends:

Definition at line 613 of file direct_sparse_solver.hpp.

References FEAT::Solver::all, FEAT::Solver::cudss, FEAT::Solver::mkldss, FEAT::Solver::mumps, FEAT::Solver::none, FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::push_allowed_backend(), FEAT::String::split_by_charset(), FEAT::Solver::superlu, and FEAT::Solver::umfpack.

Referenced by FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::push_allowed_backend(), and FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::push_allowed_backend_list().

◆ push_allowed_backend() [2/2]

template<typename Matrix_ , typename Filter_ >
void FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::push_allowed_backend ( DSSBackend  backend)
inline

Pushes a combination of allowed backends into the backend queue.

Parameters
[in]backendA combination of backends

Definition at line 647 of file direct_sparse_solver.hpp.

References FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_allowed_backends.

◆ push_allowed_backend_list() [1/2]

template<typename Matrix_ , typename Filter_ >
void FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::push_allowed_backend_list ( const std::deque< String > &  backends)
inline

Pushes a deque of allowed backends into the backend queue.

Parameters
[in]backendsA transient reference to a deque of backend strings to push

Definition at line 592 of file direct_sparse_solver.hpp.

References FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::push_allowed_backend().

◆ push_allowed_backend_list() [2/2]

template<typename Matrix_ , typename Filter_ >
void FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::push_allowed_backend_list ( const String backends)
inline

Pushes a list of allowed backends into the backend queue.

Parameters
[in]backendsA string containing a list of backends combinations separated by whitespaces

Definition at line 580 of file direct_sparse_solver.hpp.

References FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::push_allowed_backend_list(), and FEAT::String::split_by_whitespaces().

Referenced by FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::push_allowed_backend_list().

Member Data Documentation

◆ _allowed_backends

◆ _comm_self

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Dist::Comm FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_comm_self
protectedinherited

self-communicator object

Many third-party libraries always expect a MPI_Comm object even if we operate only on a single MPI process, therefore this class creates a custom self-communicator that can be passed on to the third-party libraries.

Definition at line 795 of file adp_solver_base.hpp.

Referenced by FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_comm().

◆ _core_cudss

template<typename Matrix_ , typename Filter_ >
void* FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_core_cudss
private

Nvidia cuDSS core.

Definition at line 482 of file direct_sparse_solver.hpp.

Referenced by FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::name().

◆ _core_mkldss

template<typename Matrix_ , typename Filter_ >
void* FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_core_mkldss
private

◆ _core_mumps

template<typename Matrix_ , typename Filter_ >
void* FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_core_mumps
private

MUMPS core.

Definition at line 486 of file direct_sparse_solver.hpp.

Referenced by FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::name().

◆ _core_superlu

template<typename Matrix_ , typename Filter_ >
void* FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_core_superlu
private

◆ _core_umfpack

template<typename Matrix_ , typename Filter_ >
void* FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_core_umfpack
private

UMFPACK core.

Definition at line 490 of file direct_sparse_solver.hpp.

Referenced by FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::name().

◆ _preferred_backend

template<typename Matrix_ , typename Filter_ >
PreferredBackend FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_preferred_backend
private

preferred backend of runtime at time of object creation

Definition at line 480 of file direct_sparse_solver.hpp.

Referenced by FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::init_symbolic().

◆ _system_filter

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
const FilterType& FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_filter
protectedinherited

◆ _system_matrix

◆ have_backend_cudss

template<typename Matrix_ , typename Filter_ >
constexpr bool FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::have_backend_cudss = DSS::have_cudss
staticconstexpr

specifies whether the cuDSS solver backend is available

Definition at line 462 of file direct_sparse_solver.hpp.

◆ have_backend_global

template<typename Matrix_ , typename Filter_ >
constexpr bool FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::have_backend_global = DSS::have_backend_global
staticconstexpr

specifies whether at least one backend for global systems is available

Definition at line 474 of file direct_sparse_solver.hpp.

Referenced by FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::is_available().

◆ have_backend_local

template<typename Matrix_ , typename Filter_ >
constexpr bool FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::have_backend_local = DSS::have_backend_local
staticconstexpr

specifies whether at least one backend for local systems is available

Definition at line 472 of file direct_sparse_solver.hpp.

Referenced by FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::is_available().

◆ have_backend_mkldss

template<typename Matrix_ , typename Filter_ >
constexpr bool FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::have_backend_mkldss = DSS::have_mkldss
staticconstexpr

specifies whether the MKL-DSS solver backend is available

Definition at line 464 of file direct_sparse_solver.hpp.

◆ have_backend_mumps

template<typename Matrix_ , typename Filter_ >
constexpr bool FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::have_backend_mumps = DSS::have_mumps
staticconstexpr

specifies whether the MUMPS solver backend is available

Definition at line 466 of file direct_sparse_solver.hpp.

◆ have_backend_superlu

template<typename Matrix_ , typename Filter_ >
constexpr bool FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::have_backend_superlu = DSS::have_superlu
staticconstexpr

specifies whether the SuperLU solver backend is available

Definition at line 468 of file direct_sparse_solver.hpp.

◆ have_backend_umfpack

template<typename Matrix_ , typename Filter_ >
constexpr bool FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::have_backend_umfpack = DSS::have_umfpack
staticconstexpr

specifies whether the UMFPACK solver backend is available

Definition at line 470 of file direct_sparse_solver.hpp.


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