PIPS-NLP
Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
StochGenMatrix Class Reference

#include <StochGenMatrix.h>

Inheritance diagram for StochGenMatrix:
GenMatrix DoubleMatrix IotrRefCount StochGenDummyMatrix

Public Member Functions

 StochGenMatrix ()
 
 StochGenMatrix (int id, long long global_m, long long global_n, int A_m, int A_n, int A_nnz, int B_m, int B_n, int B_nnz, MPI_Comm mpiComm_, int C_m=0, int C_n=0, int C_nnz=0)
 
virtual ~StochGenMatrix ()
 
virtual void AddChild (StochGenMatrix *child)
 
virtual void getSize (long long &m, long long &n)
 
virtual void getSize (int &m, int &n)
 
virtual int numberOfNonZeros ()
 
virtual int isKindOf (int matType)
 
virtual void atPutDense (int row, int col, double *A, int lda, int rowExtent, int colExtent)
 
virtual void fromGetDense (int row, int col, double *A, int lda, int rowExtent, int colExtent)
 
virtual void ColumnScale (OoqpVector &vec)
 
virtual void RowScale (OoqpVector &vec)
 
virtual void SymmetricScale (OoqpVector &vec)
 
virtual void scalarMult (double num)
 
virtual void fromGetSpRow (int row, int col, double A[], int lenA, int jcolA[], int &nnz, int colExtent, int &info)
 
virtual void atPutSubmatrix (int destRow, int destCol, DoubleMatrix &M, int srcRow, int srcCol, int rowExtent, int colExtent)
 
virtual void atPutSpRow (int col, double A[], int lenA, int jcolA[], int &info)
 
virtual void putSparseTriple (int irow[], int len, int jcol[], double A[], int &info)
 
virtual void getDiagonal (OoqpVector &vec)
 
virtual void setToDiagonal (OoqpVector &vec)
 
virtual void mult (double beta, OoqpVector &y, double alpha, OoqpVector &x)
 
virtual void mult (double beta, OoqpVector &y, double alpha, OoqpVector &x, OoqpVector &yvecParent)
 
virtual void transMult (double beta, OoqpVector &y, double alpha, OoqpVector &x)
 
virtual double abmaxnorm ()
 
virtual void writeToStream (std::ostream &out) const
 
virtual void symmetrize (int &info)
 
virtual void randomize (double alpha, double beta, double *seed)
 
virtual void atPutDiagonal (int idiag, OoqpVector &v)
 
virtual void fromGetDiagonal (int idiag, OoqpVector &v)
 
void matTransDMultMat (OoqpVector &d, SymMatrix **res)
 
void matTransDinvMultMat (OoqpVector &d, SymMatrix **res)
 
virtual void copyMtxFromDouble (int copyLength, double *values)
 
virtual void setAdditiveDiagonal (OoqpVector &v)
 
- Public Member Functions inherited from DoubleMatrix
 DoubleMatrix ()
 
virtual void fromAddDense (int row, int col, double *A, int lda, int rowExtent, int colExtent)
 
virtual ~DoubleMatrix ()
 
virtual void copyDiagonalVal_From (int idiag, OoqpVector &x, bool firstCall, std::map< int, int > &ValIdxMap)
 
virtual void fromGetSpRow_WithRowStart (int row, int col, double A[], int lenA, int jcolA[], int &nnz, int colExtent, int &info, int &rowStart)
 
virtual void fromGetDense_withMap (int row, int col, double *A, int lda, int rowExtent, int colExtent, int const FirstCall, std::map< int, int > &ValIdxMap)
 
virtual double * getMatVal ()
 
virtual int * krowM ()
 
virtual int * jcolM ()
 
virtual double * M ()
 
- Public Member Functions inherited from IotrRefCount
int refs ()
 
 IotrRefCount ()
 

Public Attributes

std::vector< StochGenMatrix * > children
 
SparseGenMatrixAmat
 
SparseGenMatrixBmat
 
SparseGenMatrixCmat
 
int id
 
long long m
 
long long n
 
MPI_Comm mpiComm
 
int iAmDistrib
 

Private Member Functions

OoqpVectorgetWorkPrimalVec (const StochVector &origin)
 
virtual void transMult2 (double beta, StochVector &y, double alpha, StochVector &x, OoqpVector &yvecParent)
 
virtual void transMult2 (double beta, StochVector &y, double alpha, StochVector &x, OoqpVector &yvecParent, OoqpVector &xCvecParent)
 

Private Attributes

OoqpVectorworkPrimalVec
 

Additional Inherited Members

- Static Public Member Functions inherited from IotrRefCount
static void release (IotrRefCount **obj)
 
static void addRef (IotrRefCount *const *obj)
 
- Static Public Attributes inherited from IotrRefCount
static int instances = 0
 
- Protected Member Functions inherited from IotrRefCount
virtual ~IotrRefCount ()
 

Constructor & Destructor Documentation

StochGenMatrix::StochGenMatrix ( )
inline
StochGenMatrix::StochGenMatrix ( int  id,
long long  global_m,
long long  global_n,
int  A_m,
int  A_n,
int  A_nnz,
int  B_m,
int  B_n,
int  B_nnz,
MPI_Comm  mpiComm_,
int  C_m = 0,
int  C_n = 0,
int  C_nnz = 0 
)

Constructs a matrix having local A and B blocks having the sizes and number of nz specified by A_m, A_n, A_nnz and B_m, B_n, B_nnz. Also sets the global sizes to 'global_m' and 'global_n'. The 'id' parameter is used for output/debug purposes only. The matrix that will be created has no children, just local data.

StochGenMatrix::~StochGenMatrix ( )
virtual

Member Function Documentation

double StochGenMatrix::abmaxnorm ( )
virtual

the magnitude of the element in this matrix with largest absolute value.

Implements DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::AddChild ( StochGenMatrix child)
virtual

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::atPutDense ( int  row,
int  col,
double *  A,
int  lda,
int  rowExtent,
int  colExtent 
)
virtual

Set the value of some of the elements of this matrix.

See also
DoubleMatrix::fromGetDense

Implements GenMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::atPutDiagonal ( int  idiag,
OoqpVector x 
)
virtual

Set some of the diagonal elements of this matrix.

Parameters
idiagthe index of the first diagonal element to be modified.
xthe new values for the diagonal elements.

The length of x is the number of diagonal elements to be modified. Typically x will have length less than the length of the diagonal.

Implements DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::atPutSpRow ( int  col,
double  A[],
int  lenA,
int  jcolA[],
int &  info 
)
virtual

Put a sparse row into this matrix.

The meaning of the parmameters is the same as in fromGetSpRow.

See also
DoubleMatrix::fromGetSpRow

Implements GenMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::atPutSubmatrix ( int  destRow,
int  destCol,
DoubleMatrix M,
int  srcRow,
int  srcCol,
int  rowExtent,
int  colExtent 
)
virtual

Put a submatrix of M into this matrix.

Parameters
destRowThe top row of the submatrix of M is placed at destRow.
destColThe leftmost column of the submatrix of M is placed at destCol.
srcRowThe first row of the submatrix of M is srcRow.
srcColThe first column of the submatrix of M is srcCol.
rowExtentrowExtent rows are copied from M.
colExtentcolExtent columns are copied from M.

Implements GenMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::ColumnScale ( OoqpVector vec)
virtual

Implements DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

virtual void StochGenMatrix::copyMtxFromDouble ( int  copyLength,
double *  values 
)
inlinevirtual

Reimplemented from DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::fromGetDense ( int  row,
int  col,
double *  A,
int  lda,
int  rowExtent,
int  colExtent 
)
virtual

Get the value of some of the elements of this matrix.

Parameters
rowstart reading the elements of this matrix from row number "row".
colstart reading the elements of this matrix from column number "col".
AAny array to hold the values from this matrix.
ldAthe leading dimension of A.
rowExtentget rowExtent rows from this matrix.
colExtentget colExtent columns from this matrix.

Implements DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::fromGetDiagonal ( int  idiag,
OoqpVector x 
)
virtual

Get some of the diagonal elements of this matrix.

Parameters
idiagthe index of the first diagonal element to be read.
xa vector to hold the diagonal elements

The length of x is the number of diagonal elements to be gotten. Typically x will have length less than the length of the diagonal.

Implements DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::fromGetSpRow ( int  row,
int  col,
double  A[],
int  lenA,
int  jcolA[],
int &  nnz,
int  colExtent,
int &  info 
)
virtual

Get one sparse row from this matrix.

Parameters
rowget row number "row"
colignore all elements of the row before column "col"
Astore the values of the sparse row in A
lenAthe length of A
jcolAan array of length lenA containing the column index of each element in the sparse row
colExtentignore all elements of the row that have column indices greater than or equal to col + colExtent
infoinfo is 0 if and only if the sparse row can fit into A.

Implements DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::getDiagonal ( OoqpVector vec)
virtual

Place the diagonal elements of this matrix in the vector vec

Implements DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::getSize ( long long &  m,
long long &  n 
)
virtual

Implements DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::getSize ( int &  m,
int &  n 
)
virtual

Implements DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

OoqpVector * StochGenMatrix::getWorkPrimalVec ( const StochVector origin)
private
int StochGenMatrix::isKindOf ( int  matrixType)
virtual

True if this matrix identifies itself to be of type matrixType.

Implements DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::matTransDinvMultMat ( OoqpVector d,
SymMatrix **  res 
)
virtual

C = this^T * inv(D) * this where D=diag(d) is a diagonal matrix.

Implements GenMatrix.

void StochGenMatrix::matTransDMultMat ( OoqpVector d,
SymMatrix **  res 
)
virtual

C = this^T * D * this where D=diag(d) is a diagonal matrix.

Implements GenMatrix.

void StochGenMatrix::mult ( double  beta,
OoqpVector y,
double  alpha,
OoqpVector x 
)
virtual

y = beta * y + alpha * this * x

Implements DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::mult ( double  beta,
OoqpVector y,
double  alpha,
OoqpVector x,
OoqpVector yvecParent 
)
virtual

Reimplemented in StochGenDummyMatrix.

int StochGenMatrix::numberOfNonZeros ( )
virtual

The actual number of structural non-zero elements in this sparse matrix. This includes so-called "accidental" zeros, elements that are treated as non-zero even though their value happens to be zero.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::putSparseTriple ( int  irow[],
int  len,
int  jcol[],
double  A[],
int &  info 
)
virtual

Copy elements from sparse triple format into this matrix

Parameters
lenthe number of elements
irowan array containing the row number of the elements
jcolan array containing the column number of the elements
Aan array containing the values for the elements.
infoon return, info will be zero if and only if the insertion was successful.

Implements DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::randomize ( double  alpha,
double  beta,
double *  seed 
)
virtual

Fill this matrix with random elements.

Parameters
alphathe elements will be no smaller than alpha.
betathe elements will be no larger than beta.
seeda arbitrary number used to seed the random number generator.

Implements GenMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::RowScale ( OoqpVector vec)
virtual

Implements DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::scalarMult ( double  num)
virtual

Implements DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::setAdditiveDiagonal ( OoqpVector v)
virtual

Reimplemented from DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::setToDiagonal ( OoqpVector vec)
virtual

Set the matrix to the diagoanl matrix whose diagonal is vec

Implements DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::SymmetricScale ( OoqpVector vec)
virtual

Get the number of rows and columns in the matrix

Parameters
mthe number of rows
nthe number of columns

Implements DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::symmetrize ( int &  info)
virtual

Make the elements in this matrix symmetric. The elements of interest must be in the lower triangle, and the upper triangle must be empty.

Parameters
infozero if the operation succeeded. Otherwise, insufficient space was allocated to symmetrize the matrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::transMult ( double  beta,
OoqpVector y,
double  alpha,
OoqpVector x 
)
virtual

y = beta * y + alpha * this^T * x

opt alloc buffer here and send it through the tree to be used by children when MPI_Allreduce

Implements DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::transMult2 ( double  beta,
StochVector y,
double  alpha,
StochVector x,
OoqpVector yvecParent 
)
privatevirtual

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::transMult2 ( double  beta,
StochVector y,
double  alpha,
StochVector x,
OoqpVector yvecParent,
OoqpVector xCvecParent 
)
privatevirtual

Reimplemented in StochGenDummyMatrix.

void StochGenMatrix::writeToStream ( std::ostream &  out) const
virtual

Write this element to a C++ stream

Implements DoubleMatrix.

Reimplemented in StochGenDummyMatrix.

Member Data Documentation

SparseGenMatrix* StochGenMatrix::Amat
SparseGenMatrix* StochGenMatrix::Bmat
std::vector<StochGenMatrix*> StochGenMatrix::children
SparseGenMatrix* StochGenMatrix::Cmat
int StochGenMatrix::iAmDistrib
int StochGenMatrix::id
long long StochGenMatrix::m
MPI_Comm StochGenMatrix::mpiComm
long long StochGenMatrix::n
OoqpVector* StochGenMatrix::workPrimalVec
private

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