PIPS-NLP
|
#include <SparseStorage.h>
Public Member Functions | |
SparseStorage (int m_, int n_, int len_) | |
SparseStorage (int m_, int n_, int len_, int *krowM_, int *jcolM_, double *M_, int deleteElts=0, double *additiveDiag_=NULL) | |
void | shiftRows (int row, int shift, int &info) |
virtual void | getSize (int &m, int &n) |
int | rows () |
int | cols () |
int | length () |
int | numberOfNonZeros () |
virtual void | fromGetDense (int row, int col, double *A, int lda, int rowExtent, int colExtent) |
virtual void | fromAddDense (int row, int col, double *A, int lda, int rowExtent, int colExtent) |
virtual void | atPutDense (int row, int col, double *A, int lda, int rowExtent, int colExtent) |
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 | ColumnScale (OoqpVector &vec) |
virtual void | RowScale (OoqpVector &vec) |
virtual void | SymmetricScale (OoqpVector &vec) |
virtual void | scalarMult (double num) |
virtual void | atPutSpRow (int col, double A[], int lenA, int irowA[], int &info) |
virtual void | fromGetSpRow (int row, int col, double A[], int lenA, int irowA[], int &nnz, int rowExtent, int &info) |
virtual void | randomize (double alpha, double beta, double *seed) |
virtual void | getTransposePat (int row, int col, int rowExtent, int colExtent, int kpat[], int krowM[], int jcolM[]) |
virtual void | getFromPat (double data[], int n, int kpat[]) |
virtual void | mult (double beta, double y[], int incy, double alpha, double x[], int incx) |
virtual void | transMult (double beta, double y[], int incy, double alpha, double x[], int incx) |
virtual void | atPutDiagonal (int idiag, OoqpVector &v) |
virtual void | fromGetDiagonal (int idiag, OoqpVector &v) |
virtual void | atPutDiagonal (int idiag, double x[], int incx, int extent) |
virtual void | writeToStream (std::ostream &out) const |
virtual void | symmetrize (int &info) |
virtual int * | symmetrize_set (int &info) |
virtual void | symmetrize_valonly (double *val_lower, int *goffIDX) |
virtual double | abmaxnorm () |
void | matTransDSymbMultMat (double *d, int *krowMt, int *jcolMt, double *dMt, int **krowMtM, int **jcolMtM, double **dMtM) |
void | matTransDMultMat (double *d, int *krowMt, int *jcolMt, double *dMt, int *krowMtM, int *jcolMtM, double *dMtM) |
void | matTransDinvMultMat (double *d, int *krowMt, int *jcolMt, double *dMt, int *krowMtM, int *jcolMtM, double *dMtM) |
void | transpose (int *krowMt, int *jcolMt, double *dMt) |
void | transpose_withOriIDX (int *krowMt, int *jcolMt, double *Mt, int *OriIDX) |
void | transpose_withNewIDX (int *krowMt, int *jcolMt, double *Mt, int *NewIDX) |
void | reduceToLower () |
void | transMultLower (double beta, double y[], double alpha, double x[], int firstrow) |
void | transMultMat (double beta, double *Y, int ny, int ldy, double alpha, double *X, int ldx) |
void | transMultMatLower (double *Y, int ny, int firstrow, double alpha, double *X, int ldx) |
void | transMultMatLower (double beta, double *Y, int ny, int ldy, double alpha, double *X, int ldx, int colStart) |
void | fromGetColBlock (int col, double *A, int lda, int colExtent, bool &allzero) |
void | fromGetColBlock (int col, double *A, int lda, int colExtent, int *colSparsity, bool &allzero) |
void | dump (const std::string &_filename) |
virtual void | copyMtxFromDouble (int copyLength, double *values) |
virtual | ~SparseStorage () |
virtual void | setAdditiveDiagonal (OoqpVector &v) |
virtual void | copyDiagonalVal_From (int idiag, OoqpVector &vvec, bool firstCall, std::map< int, int > &ValIdxMap) |
virtual void | copyDiagonalVal_From (int idiag, double x[], int incx, int diagLength, bool firstCall, std::map< int, int > &ValIdxMap) |
virtual void | atPutSpRow_CorrectMap (int row, double A[], int lenA, int jcolA[], int &info, std::map< int, int > &ValIdxMap, int const IDXconstant) |
virtual void | fromGetSpRow_WithRowStart (int row, int col, double A[], int lenA, int irowA[], int &nnz, int rowExtent, 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 void | shiftRows_CorrectMap (int row, int shift, int &info, std::map< int, int > &ValIdxMap) |
![]() | |
DoubleStorage () | |
virtual | ~DoubleStorage () |
![]() | |
int | refs () |
IotrRefCount () | |
Public Attributes | |
int | m |
int | n |
int | len |
int * | jcolM |
int * | krowM |
double * | M |
double * | additiveDiag |
Static Public Attributes | |
static int | instances = 0 |
![]() | |
static int | instances = 0 |
Protected Attributes | |
int | neverDeleteElts |
Additional Inherited Members | |
![]() | |
static void | release (IotrRefCount **obj) |
static void | addRef (IotrRefCount *const *obj) |
![]() | |
virtual | ~IotrRefCount () |
A class for managing the matrix elements used by sparse matrices.
SparseStorage::SparseStorage | ( | int | m_, |
int | n_, | ||
int | len_ | ||
) |
SparseStorage::SparseStorage | ( | int | m_, |
int | n_, | ||
int | len_, | ||
int * | krowM_, | ||
int * | jcolM_, | ||
double * | M_, | ||
int | deleteElts = 0 , |
||
double * | additiveDiag_ = NULL |
||
) |
|
virtual |
|
virtual |
|
virtual |
Implements DoubleStorage.
|
virtual |
Implements DoubleStorage.
|
virtual |
|
virtual |
Implements DoubleStorage.
|
virtual |
|
inline |
|
virtual |
Implements DoubleStorage.
|
virtual |
Reimplemented from DoubleStorage.
|
virtual |
|
virtual |
void SparseStorage::dump | ( | const std::string & | _filename | ) |
|
virtual |
void SparseStorage::fromGetColBlock | ( | int | col, |
double * | A, | ||
int | lda, | ||
int | colExtent, | ||
bool & | allzero | ||
) |
void SparseStorage::fromGetColBlock | ( | int | col, |
double * | A, | ||
int | lda, | ||
int | colExtent, | ||
int * | colSparsity, | ||
bool & | allzero | ||
) |
|
virtual |
for( jcurrent++; jcurrent < n; jcurrent++ ) {
Implements DoubleStorage.
|
virtual |
for( jcurrent++; jcurrent < n; jcurrent++ ) {
|
virtual |
Implements DoubleStorage.
|
virtual |
Implements DoubleStorage.
|
virtual |
|
virtual |
Implements DoubleStorage.
|
virtual |
|
virtual |
Implements DoubleStorage.
|
virtual |
|
inline |
void SparseStorage::matTransDinvMultMat | ( | double * | d, |
int * | krowMt, | ||
int * | jcolMt, | ||
double * | dMt, | ||
int * | krowMtM, | ||
int * | jcolMtM, | ||
double * | dMtM | ||
) |
void SparseStorage::matTransDMultMat | ( | double * | d, |
int * | krowMt, | ||
int * | jcolMt, | ||
double * | dMt, | ||
int * | krowMtM, | ||
int * | jcolMtM, | ||
double * | dMtM | ||
) |
Numerical multiplication MtM = M^T * D * M where D=diag(d) is a diagonal matrix and M=this. M^T and MtM buffers should be allocated before calling this method by calling method matTransDSymbMultMat.
void SparseStorage::matTransDSymbMultMat | ( | double * | d, |
int * | krowMt, | ||
int * | jcolMt, | ||
double * | dMt, | ||
int ** | krowMtM, | ||
int ** | jcolMtM, | ||
double ** | dMtM | ||
) |
Computes the sparsity pattern of MtM = M^T * D * M where D=diag(d) is a diagonal matrix and M=this.
Find the nonzero pattern of the product matrix, allocate it and returns it.
Also allocates, builds and returns this^T since it is needed later for numerical multiplication.
|
virtual |
|
inline |
|
virtual |
|
virtual |
void SparseStorage::reduceToLower | ( | ) |
|
inline |
|
virtual |
Implements DoubleStorage.
|
virtual |
Implements DoubleStorage.
|
virtual |
|
virtual |
Implements DoubleStorage.
void SparseStorage::shiftRows | ( | int | row, |
int | shift, | ||
int & | info | ||
) |
|
virtual |
|
virtual |
Implements DoubleStorage.
|
virtual |
|
virtual |
|
virtual |
|
virtual |
void SparseStorage::transMultLower | ( | double | beta, |
double | y[], | ||
double | alpha, | ||
double | x[], | ||
int | firstrow | ||
) |
void SparseStorage::transMultMat | ( | double | beta, |
double * | Y, | ||
int | ny, | ||
int | ldy, | ||
double | alpha, | ||
double * | X, | ||
int | ldx | ||
) |
void SparseStorage::transMultMatLower | ( | double * | Y, |
int | ny, | ||
int | firstrow, | ||
double | alpha, | ||
double * | X, | ||
int | ldx | ||
) |
void SparseStorage::transMultMatLower | ( | double | beta, |
double * | Y, | ||
int | ny, | ||
int | ldy, | ||
double | alpha, | ||
double * | X, | ||
int | ldx, | ||
int | colStart | ||
) |
Y <- alpha* M^T X + beta*Y, where M is this Special update function, computes only the elements in Y that are lower triangular elements in a larger matrix that contains Y (see impl file for more details)
void SparseStorage::transpose | ( | int * | krowMt, |
int * | jcolMt, | ||
double * | dMt | ||
) |
Builds the transpose: Mt = this^T
void SparseStorage::transpose_withNewIDX | ( | int * | krowMt, |
int * | jcolMt, | ||
double * | Mt, | ||
int * | NewIDX | ||
) |
Builds the transpose: Mt = this^T, with index of new matrix : ie goff from 13 to 7, NewIDX[13]=7
void SparseStorage::transpose_withOriIDX | ( | int * | krowMt, |
int * | jcolMt, | ||
double * | Mt, | ||
int * | OriIDX | ||
) |
Builds the transpose: Mt = this^T, with index of original matrix: ie goff from 13 to 7, OriIDX[7]=13
|
virtual |
double* SparseStorage::additiveDiag |
|
static |
int* SparseStorage::jcolM |
int* SparseStorage::krowM |
int SparseStorage::len |
int SparseStorage::m |
double* SparseStorage::M |
int SparseStorage::n |
|
protected |