Amesos_Scalapack Class Reference

Amesos_Scalapack: A serial and parallel dense solver. For now, we implement only the unsymmetric ScaLAPACK solver. More...

#include <Amesos_Scalapack.h>

Inheritance diagram for Amesos_Scalapack:

[legend]
Collaboration diagram for Amesos_Scalapack:
[legend]
List of all members.

Public Member Functions

Constructor methods
 Amesos_Scalapack (const Epetra_LinearProblem &LinearProblem)
 Amesos_Scalapack Constructor.
 ~Amesos_Scalapack (void)
 Amesos_Scalapack Destructor.
Mathematical functions.
int SymbolicFactorization ()
 Performs SymbolicFactorization on the matrix A.
int NumericFactorization ()
 Performs NumericFactorization on the matrix A.
int Solve ()
 Solves A X = B (or AT X = B).
Additional methods required to support the Epetra_Operator interface.
const Epetra_LinearProblemGetProblem () const
 Get a pointer to the Problem.
bool MatrixShapeOK () const
 Returns true if SCALAPACK can handle this matrix shape.
int SetUseTranspose (bool UseTranspose)
 SetUseTranpose(true) is more efficient in Amesos_Scalapack.
bool UseTranspose () const
 Returns the current UseTranspose setting.
const Epetra_CommComm () const
 Returns a pointer to the Epetra_Comm communicator associated with this matrix.
int SetParameters (Teuchos::ParameterList &ParameterList)
 Updates internal variables.
void PrintTiming ()
 Print timing information.
void PrintStatus ()
 Print information about the factorization and solution phases.

Protected Attributes

int MaxProcesses_
int iam_
int NumGlobalElements_
int NumGlobalNonzeros_
int nprow_
int npcol_
int ictxt_
int m_per_p_
int DescA_ [10]
Epetra_MapScaLAPACK1DMap_
Epetra_CrsMatrixScaLAPACK1DMatrix_
Epetra_MapVectorMap_
vector< double > DenseA_
vector< int > Ipiv_
int NumOurRows_
int NumOurColumns_
bool UseTranspose_
const Epetra_LinearProblemProblem_
bool PrintTiming_
bool PrintStatus_
bool ComputeVectorNorms_
bool ComputeTrueResidual_
int verbose_
int debug_
double ConTime_
double SymTime_
double NumTime_
double SolTime_
double VecTime_
double MatTime_
int NumSymbolicFact_
int NumNumericFact_
int NumSolve_
bool TwoD_distribution_
int grid_nb_
int mypcol_
int myprow_
Epetra_CrsMatrixFatOut_
int nb_
int lda_
Epetra_TimeTime_

Detailed Description

Amesos_Scalapack: A serial and parallel dense solver. For now, we implement only the unsymmetric ScaLAPACK solver.

Amesos_Scalapack, an object-oriented wrapper for LAPACK and ScaLAPACK, will solve a linear systems of equations: A X = B using Epetra objects and the ScaLAPACK library, where A is an Epetra_RowMatrix and X and B are Epetra_MultiVector objects.

<br /><br />

Amesos_Scalapack can be competitive for matrices that are not particularly sparse. ScaLAPACK solves matrices for which the fill-in is roughly 10% to 20% of the matrix size in time comparable to that achieve by other Amesos classes. Amesos_Scalapack scales well and hence its performance advantage will be largest when large number of processes are involved.

<br /><br />

Amesos_Scalapack uses the ScaLAPACK functions PDGETRF and PDGETRS if more than one process is used. If only one process is used, Amesos_ScaLAPACK uses the LAPACK function PDGETRF and PDGETRS.

<br /><br />

AmesosScaLAPACK uses full partial pivoting and will therefore provide answers that are at least as accurate as any direct sparse solver.

<br /><br />

AmesosScalapack makes sense under the following circumstances:

Common control parameters :

Amesos_Scalapack supports the following parameters which are common to accross multiple Amesos solvers:

Amesos_Scalapack supports the following parameters specific to Amesos_Scalapack.
Teuchos::ParameterList ScalapackParams = ParameterList.sublist("Scalapack") ;

Limitations:

None of the following limitations would be particularly difficult to remove.

<br /><br />

The present implementation limits the number of right hand sides to the number of rows assigned to each process. i.e. nrhs < n/p.

<br /><br />

The present implementation does not take advantage of symmetric or symmetric positive definite matrices, although ScaLAPACK has separate routines to take advantages of such matrices.


Constructor & Destructor Documentation

Amesos_Scalapack::Amesos_Scalapack const Epetra_LinearProblem LinearProblem  ) 
 

Amesos_Scalapack Constructor.

Creates an Amesos_Scalapack instance, using an Epetra_LinearProblem, passing in an already-defined Epetra_LinearProblem object.

Note: The operator in LinearProblem must be an Epetra_RowMatrix.

Amesos_Scalapack::~Amesos_Scalapack void   ) 
 

Amesos_Scalapack Destructor.

Completely deletes an Amesos_Scalapack object.


Member Function Documentation

bool Amesos_Scalapack::MatrixShapeOK  )  const [virtual]
 

Returns true if SCALAPACK can handle this matrix shape.

Returns true if the matrix shape is one that SCALAPACK can handle. SCALAPACK only works with square matrices.

Implements Amesos_BaseSolver.

int Amesos_Scalapack::NumericFactorization  )  [virtual]
 

Performs NumericFactorization on the matrix A.

In addition to performing numeric factorization on the matrix A, the call to NumericFactorization() implies that no change will be made to the underlying matrix without a subsequent call to NumericFactorization().

preconditions:

  • GetProblem().GetOperator() != 0 (return -1)
  • MatrixShapeOk(GetProblem().GetOperator()) == true (return -6) NOT IMPLEMENTED
  • The non-zero structure of the matrix should not have changed since the last call to SymbolicFactorization(). Irrelevant for Amesos_Scalapack.
  • The distribution of the matrix should not have changed since the last call to SymbolicFactorization(). Irrelevant for Amesos_Scalapack.

postconditions:

  • nprow_, npcol_, DescA_
  • DenseA will be factored
  • Ipiv_ contains the pivots

Returns:
Integer error code, set to 0 if successful.

Implements Amesos_BaseSolver.

int Amesos_Scalapack::SetParameters Teuchos::ParameterList ParameterList  )  [virtual]
 

Updates internal variables.

<br >Preconditions:

  • None.

<br >Postconditions:

  • Internal variables controlling the factorization and solve will be updated and take effect on all subsequent calls to NumericFactorization() and Solve().
  • All parameters whose value are to differ from the default values must be included in ParameterList. Parameters not specified in ParameterList revert to their default values.

Returns:
Integer error code, set to 0 if successful.

Implements Amesos_BaseSolver.

int Amesos_Scalapack::SetUseTranspose bool  UseTranspose  )  [inline, virtual]
 

SetUseTranpose(true) is more efficient in Amesos_Scalapack.

Implements Amesos_BaseSolver.

int Amesos_Scalapack::Solve  )  [virtual]
 

Solves A X = B (or AT X = B).

preconditions:

postconditions:

  • X will be set such that A X = B (or AT X = B), within the limits of the accuracy of the the Scalapack solver.

Returns:
Integer error code, set to 0 if successful.

Implements Amesos_BaseSolver.

int Amesos_Scalapack::SymbolicFactorization  )  [virtual]
 

Performs SymbolicFactorization on the matrix A.

There is no symbolic factorization phase in ScaLAPACK, as it operates only on dense matrices. Hence, Amesos_Scalapack::SymbolicFactorization() takes no action.

Returns:
Integer error code, set to 0 if successful.

Implements Amesos_BaseSolver.


The documentation for this class was generated from the following files:
Generated on Thu Sep 18 12:41:33 2008 for Amesos by doxygen 1.3.9.1