concepts::Pardiso Class Reference
Sparse direct solver for symmetric and unsymmetric matrices. More...
#include <pardiso.hh>
Public Types | |
typedef Cmplxtype< Real >::type | c_type |
Real type of data type. More... | |
enum | MATRIX_TYPE { STRUCT_SYMM = 1, SPD = 2, SYMM_INDEF = -2, UNSYMM = 11 } |
Type of matrix to solve. More... | |
typedef Realtype< Real >::type | r_type |
Real type of data type. More... | |
typedef Real | type |
Type of data, e.g. matrix entries. More... | |
Public Member Functions | |
virtual const uint | dimX () const |
Returns the size of the image space of the operator (number of rows of the corresponding matrix) More... | |
virtual const uint | dimY () const |
Returns the size of the source space of the operator (number of columns of the corresponding matrix) More... | |
virtual void | operator() () |
Application operator without argument. More... | |
virtual void | operator() (const Function< c_type > &fncY, Function< c_type > &fncX) |
Application operator for complex function fncY . More... | |
virtual void | operator() (const Function< r_type > &fncY, Function< Real > &fncX) |
Application operator for real function fncY . More... | |
virtual void | operator() (const Function< Real > &fncY, Function< Real > &fncX) |
void | operator() (const Vector< Real > &fncY, Vector< Real > &fncX) |
Pardiso (const SparseMatrix< Real > &matrix, enum MATRIX_TYPE type) | |
Constructor. More... | |
virtual void | show_messages () |
virtual const Space< Real > & | spaceX () const |
virtual const Space< Real > & | spaceY () const |
virtual | ~Pardiso () |
Protected Member Functions | |
virtual std::ostream & | info (std::ostream &os) const |
Protected Attributes | |
uint | dimX_ |
Dimension of image space and the source space. More... | |
uint | dimY_ |
Private Member Functions | |
void | errorcheck_ (int error) const throw (FortranException) |
Checks error condition of a PARDISO call and outputs a error message. More... | |
int | solver_pardiso_factor_ () |
Calls PARDISO to factor the matrix (symbolically and numerically) More... | |
int | solver_pardiso_solve_ (double *, double *) |
Calls PARDISO to do the forward and backward substiution. More... | |
Private Attributes | |
void * | A_ |
PARDISO data: matrix in Compressed Sparse Row format. More... | |
Array< Real > | a_ |
PARDISO data: entries of the matrix. More... | |
int | error |
bool | factored_ |
Stores if the factorization was already computed before. More... | |
Array< size_t > | handle |
PARDISO data: parameter. More... | |
Array< uint > | ia_ |
PARDISO data: row and column indices of the matrix. More... | |
Array< int > | iparam |
PARDISO data: parameter. More... | |
Array< uint > | ja_ |
int | matrix_number |
int | matrix_type |
int | max_factorizations |
PARDISO data: parameter. More... | |
int | max_threads |
int | msglvl |
const uint | n_ |
System size. More... | |
int | nb |
uint | nnz_ |
PARDISO data: number of non-zeros. More... | |
const Space< Real > & | spcX_ |
Image space. More... | |
const Space< Real > & | spcY_ |
Source space. More... | |
bool | symmetric_ |
Symmetric system? More... | |
Detailed Description
Sparse direct solver for symmetric and unsymmetric matrices.
This class interfaces to PARDISO [1]. Use the environment variable OMP_NUM_THREADS to change the number of threas used (default is 1).
The package PARDISO is a thread-safe, high-performance, robust, memory efficient and easy to use software for solving large sparse symmetric and unsymmetric linear systems of equations on shared memory multiprocessors. The solver uses a combination of left- and right-looking Level-3 BLAS supernode techniques to exploit pipelining parallelism and memory hierarchies. In order to improve sequential and parallel sparse numerical factorization performance, the algorithms are based on a Level-3 BLAS update and pipelining parallelism is exploited with a combination of left- and right-looking supernode techniques.
- See also
- [1] Olaf Schenk, Klaus Gärtner, Wolfgang Fichtner, Andreas Stricker, PARDISO: a high-performance serial and parallel sparse linear Linear Solvers in semiconductor device simulation, Future Generation Computer System 18 (2001), 69-78.
- [2] Pardiso Homepage
- Examples
- hpFEM2d.cc.
Definition at line 43 of file pardiso.hh.
Member Typedef Documentation
◆ c_type
Real type of data type.
Definition at line 49 of file compositions.hh.
◆ r_type
Real type of data type.
Definition at line 47 of file compositions.hh.
◆ type
|
inherited |
Type of data, e.g. matrix entries.
Definition at line 45 of file compositions.hh.
Member Enumeration Documentation
◆ MATRIX_TYPE
Type of matrix to solve.
Enumerator | |
---|---|
STRUCT_SYMM | |
SPD | |
SYMM_INDEF | |
UNSYMM |
Definition at line 46 of file pardiso.hh.
Constructor & Destructor Documentation
◆ Pardiso()
concepts::Pardiso::Pardiso | ( | const SparseMatrix< Real > & | matrix, |
enum MATRIX_TYPE | type | ||
) |
Constructor.
- Parameters
-
matrix Matrix type Type of the matrix
◆ ~Pardiso()
|
virtual |
Member Function Documentation
◆ dimX()
|
inlinevirtualinherited |
Returns the size of the image space of the operator (number of rows of the corresponding matrix)
Definition at line 93 of file compositions.hh.
◆ dimY()
|
inlinevirtualinherited |
Returns the size of the source space of the operator (number of columns of the corresponding matrix)
Definition at line 98 of file compositions.hh.
◆ errorcheck_()
|
private |
Checks error condition of a PARDISO call and outputs a error message.
◆ info()
|
protectedvirtual |
Reimplemented from concepts::Operator< Real >.
◆ operator()() [1/5]
|
virtualinherited |
Application operator without argument.
Reimplemented in concepts::VecOperator< Real >.
◆ operator()() [2/5]
|
virtualinherited |
Application operator for complex function fncY
.
Computes fncX
= A(fncY
) where A is this operator. fncX
becomes complex.
In derived classes its enough to implement the operator() for complex Operator's. If a real counterpart is not implemented, the function fncY
is splitted into real and imaginary part and the application operator for real functions is called for each. Then the result is combined.
If in a derived class the operator() for complex Operator's is not implemented, a exception is thrown from here.
Reimplemented in concepts::VecOperator< Real >.
◆ operator()() [3/5]
|
virtualinherited |
Application operator for real function fncY
.
Computes fncX
= A(fncY
) where A is this operator.
fncX
becomes the type of the operator, for real data it becomes real, for complex data it becomes complex.
In derived classes its enough to implement the operator() for real Operator's. If a complex counterpart is not implemented, the function fncY
is transformed to a complex function and then the application operator for complex functions is called.
If in a derived class the operator() for real Operator's is not implemented, a exception is thrown from here.
Reimplemented in concepts::VecOperator< Real >.
◆ operator()() [4/5]
|
virtual |
◆ operator()() [5/5]
◆ show_messages()
|
inlinevirtualinherited |
Definition at line 100 of file compositions.hh.
◆ solver_pardiso_factor_()
|
private |
Calls PARDISO to factor the matrix (symbolically and numerically)
◆ solver_pardiso_solve_()
|
private |
Calls PARDISO to do the forward and backward substiution.
◆ spaceX()
Definition at line 64 of file pardiso.hh.
◆ spaceY()
Definition at line 65 of file pardiso.hh.
Member Data Documentation
◆ A_
|
private |
PARDISO data: matrix in Compressed Sparse Row format.
Definition at line 83 of file pardiso.hh.
◆ a_
PARDISO data: entries of the matrix.
Definition at line 85 of file pardiso.hh.
◆ dimX_
|
protectedinherited |
Dimension of image space and the source space.
Definition at line 104 of file compositions.hh.
◆ dimY_
|
protectedinherited |
Definition at line 104 of file compositions.hh.
◆ error
|
private |
Definition at line 93 of file pardiso.hh.
◆ factored_
|
private |
Stores if the factorization was already computed before.
Definition at line 78 of file pardiso.hh.
◆ handle
|
private |
PARDISO data: parameter.
Definition at line 89 of file pardiso.hh.
◆ ia_
|
private |
PARDISO data: row and column indices of the matrix.
Definition at line 87 of file pardiso.hh.
◆ iparam
|
private |
PARDISO data: parameter.
Definition at line 91 of file pardiso.hh.
◆ ja_
|
private |
Definition at line 87 of file pardiso.hh.
◆ matrix_number
|
private |
Definition at line 93 of file pardiso.hh.
◆ matrix_type
|
private |
Definition at line 93 of file pardiso.hh.
◆ max_factorizations
|
private |
PARDISO data: parameter.
Definition at line 93 of file pardiso.hh.
◆ max_threads
|
private |
Definition at line 94 of file pardiso.hh.
◆ msglvl
|
private |
Definition at line 93 of file pardiso.hh.
◆ n_
|
private |
System size.
Definition at line 70 of file pardiso.hh.
◆ nb
|
private |
Definition at line 94 of file pardiso.hh.
◆ nnz_
|
private |
PARDISO data: number of non-zeros.
Definition at line 81 of file pardiso.hh.
◆ spcX_
Image space.
Definition at line 72 of file pardiso.hh.
◆ spcY_
Source space.
Definition at line 74 of file pardiso.hh.
◆ symmetric_
|
private |
Symmetric system?
Definition at line 76 of file pardiso.hh.
The documentation for this class was generated from the following file:
- operator/pardiso.hh