Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)

Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
concepts::Pardiso Class Reference

Sparse direct solver for symmetric and unsymmetric matrices. More...

#include <pardiso.hh>

Inheritance diagram for concepts::Pardiso:
Inheritance graph
[legend]
Collaboration diagram for concepts::Pardiso:
Collaboration graph
[legend]

List of all members.

Public Types

typedef Cmplxtype< Real >::type c_type
 Real type of data type.
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.
typedef Real type
 Type of data, e.g. matrix entries.

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)
virtual const uint dimY () const
 Returns the size of the source space of the operator (number of columns of the corresponding matrix)
void operator() (const Vector< Real > &fncY, Vector< Real > &fncX)
virtual void operator() (const Function< c_type > &fncY, Function< c_type > &fncX)
 Application operator for complex function fncY.
virtual void operator() (const Function< Real > &fncY, Function< Real > &fncX)
virtual void operator() (const Function< r_type > &fncY, Function< Real > &fncX)
 Application operator for real function fncY.
 Pardiso (const SparseMatrix< Real > &matrix, enum MATRIX_TYPE type)
 Constructor.
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
 Returns information in an output stream.

Protected Attributes

uint dimX_
 Dimension of image space and the source space.
uint dimY_

Private Member Functions

void errorcheck_ (int error) const throw (FortranException)
 Checks error condition of a PARDISO call and outputs a error message.
int solver_pardiso_factor_ ()
 Calls PARDISO to factor the matrix (symbolically and numerically)
int solver_pardiso_solve_ (double *, double *)
 Calls PARDISO to do the forward and backward substiution.

Private Attributes

void * A_
 PARDISO data: matrix in Compressed Sparse Row format.
Array< Reala_
 PARDISO data: entries of the matrix.
int error
bool factored_
 Stores if the factorization was already computed before.
Array< size_t > handle
 PARDISO data: parameter.
Array< uint > ia_
 PARDISO data: row and column indices of the matrix.
Array< int > iparam
 PARDISO data: parameter.
Array< uint > ja_
int matrix_number
int matrix_type
int max_factorizations
 PARDISO data: parameter.
int max_threads
int msglvl
const uint n_
 System size.
int nb
uint nnz_
 PARDISO data: number of non-zeros.
const Space< Real > & spcX_
 Image space.
const Space< Real > & spcY_
 Source space.
bool symmetric_
 Symmetric system?

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
Author:
Philipp Frauenfelder, 2003
Test:
test::PardisoTest
Examples:

hpFEM2d.cc.

Definition at line 40 of file pardiso.hh.


Member Typedef Documentation

typedef Cmplxtype<Real >::type concepts::Operator< Real >::c_type [inherited]
typedef Realtype<Real >::type concepts::Operator< Real >::r_type [inherited]
typedef Real concepts::Operator< Real >::type [inherited]

Type of data, e.g. matrix entries.

Definition at line 43 of file compositions.hh.


Member Enumeration Documentation

Type of matrix to solve.

Enumerator:
STRUCT_SYMM 
SPD 
SYMM_INDEF 
UNSYMM 

Definition at line 43 of file pardiso.hh.


Constructor & Destructor Documentation

concepts::Pardiso::Pardiso ( const SparseMatrix< Real > &  matrix,
enum MATRIX_TYPE  type 
)

Constructor.

Parameters:
matrixMatrix
typeType of the matrix
virtual concepts::Pardiso::~Pardiso ( ) [virtual]

Member Function Documentation

virtual const uint concepts::Operator< Real >::dimX ( ) const [inline, virtual, inherited]

Returns the size of the image space of the operator (number of rows of the corresponding matrix)

Examples:
hpFEM2d-simple.cc, and hpFEM2d.cc.

Definition at line 87 of file compositions.hh.

virtual const uint concepts::Operator< Real >::dimY ( ) const [inline, virtual, inherited]

Returns the size of the source space of the operator (number of columns of the corresponding matrix)

Definition at line 92 of file compositions.hh.

void concepts::Pardiso::errorcheck_ ( int  error) const throw (FortranException) [private]

Checks error condition of a PARDISO call and outputs a error message.

virtual std::ostream& concepts::Pardiso::info ( std::ostream &  os) const [protected, virtual]

Returns information in an output stream.

Reimplemented from concepts::Operator< Real >.

virtual void concepts::Operator< Real >::operator() ( const Function< r_type > &  fncY,
Function< Real > &  fncX 
) [virtual, inherited]

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 >, concepts::DenseMatrix< Real >, concepts::DiagonalMatrix< Real >, concepts::Matrix< Real >, concepts::Permutation< Real >, and concepts::SparseMatrix< Real >.

virtual void concepts::Operator< Real >::operator() ( const Function< c_type > &  fncY,
Function< c_type > &  fncX 
) [virtual, inherited]

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 >, concepts::DenseMatrix< Real >, concepts::DiagonalMatrix< Real >, concepts::Matrix< Real >, concepts::Permutation< Real >, and concepts::SparseMatrix< Real >.

virtual void concepts::Pardiso::operator() ( const Function< Real > &  fncY,
Function< Real > &  fncX 
) [virtual]
void concepts::Pardiso::operator() ( const Vector< Real > &  fncY,
Vector< Real > &  fncX 
)
int concepts::Pardiso::solver_pardiso_factor_ ( ) [private]

Calls PARDISO to factor the matrix (symbolically and numerically)

int concepts::Pardiso::solver_pardiso_solve_ ( double *  ,
double *   
) [private]

Calls PARDISO to do the forward and backward substiution.

virtual const Space<Real>& concepts::Pardiso::spaceX ( ) const [inline, virtual]

Definition at line 61 of file pardiso.hh.

virtual const Space<Real>& concepts::Pardiso::spaceY ( ) const [inline, virtual]

Definition at line 62 of file pardiso.hh.


Member Data Documentation

void* concepts::Pardiso::A_ [private]

PARDISO data: matrix in Compressed Sparse Row format.

Definition at line 80 of file pardiso.hh.

PARDISO data: entries of the matrix.

Definition at line 82 of file pardiso.hh.

uint concepts::Operator< Real >::dimX_ [protected, inherited]

Dimension of image space and the source space.

Definition at line 96 of file compositions.hh.

uint concepts::Operator< Real >::dimY_ [protected, inherited]

Definition at line 96 of file compositions.hh.

int concepts::Pardiso::error [private]

Definition at line 90 of file pardiso.hh.

Stores if the factorization was already computed before.

Definition at line 75 of file pardiso.hh.

Array<size_t> concepts::Pardiso::handle [private]

PARDISO data: parameter.

Definition at line 86 of file pardiso.hh.

Array<uint> concepts::Pardiso::ia_ [private]

PARDISO data: row and column indices of the matrix.

Definition at line 84 of file pardiso.hh.

PARDISO data: parameter.

Definition at line 88 of file pardiso.hh.

Array<uint> concepts::Pardiso::ja_ [private]

Definition at line 84 of file pardiso.hh.

Definition at line 90 of file pardiso.hh.

Definition at line 90 of file pardiso.hh.

PARDISO data: parameter.

Definition at line 90 of file pardiso.hh.

Definition at line 90 of file pardiso.hh.

Definition at line 90 of file pardiso.hh.

const uint concepts::Pardiso::n_ [private]

System size.

Definition at line 67 of file pardiso.hh.

int concepts::Pardiso::nb [private]

Definition at line 90 of file pardiso.hh.

uint concepts::Pardiso::nnz_ [private]

PARDISO data: number of non-zeros.

Definition at line 78 of file pardiso.hh.

const Space<Real>& concepts::Pardiso::spcX_ [private]

Image space.

Definition at line 69 of file pardiso.hh.

const Space<Real>& concepts::Pardiso::spcY_ [private]

Source space.

Definition at line 71 of file pardiso.hh.

Symmetric system?

Definition at line 73 of file pardiso.hh.


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

Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)