NTPoly
Public Member Functions | Friends | List of all members
NTPoly::Matrix_ps Class Reference

A Module For Performing Distributed Sparse Matrix Operations. More...

#include <PSMatrix.h>

Public Member Functions

 Matrix_ps (int matrix_dimension)
 
 Matrix_ps (int matrix_dimension, const ProcessGrid &grid)
 
 Matrix_ps (std::string file_name, bool is_binary=false)
 
 Matrix_ps (std::string file_name, const ProcessGrid &grid, bool is_binary=false)
 
 Matrix_ps (const Matrix_ps &matB)
 
void WriteToBinary (std::string file_name) const
 
void WriteToMatrixMarket (std::string file_name) const
 
void FillFromTripletList (const TripletList_r &triplet_list)
 
void FillFromTripletList (const TripletList_c &triplet_list)
 
void FillDistributedPermutation (const Permutation &lb, bool permuterows=true)
 
void FillIdentity ()
 Fills this matrix as the identity matrix.
 
int GetActualDimension () const
 get the actual dimension of the matrix.
 
int GetLogicalDimension () const
 the logical dimension is scaled so each process has an even slice.
 
long int GetSize () const
 Get the total number of non-zero entries in the matrix.
 
void GetTripletList (TripletList_r &triplet_list) const
 
void GetTripletList (TripletList_c &triplet_list) const
 
void GetMatrixBlock (TripletList_r &triplet_list, int start_row, int end_row, int start_column, int end_column)
 
void GetMatrixBlock (TripletList_c &triplet_list, int start_row, int end_row, int start_column, int end_column)
 
void GetMatrixSlice (Matrix_ps &submatrix, int start_row, int end_row, int start_column, int end_column)
 
void Transpose (const NTPoly::Matrix_ps &matA)
 Transpose a sparse matrix.
 
void Conjugate ()
 Compute the complex conjugate of a matrix.
 
void Resize (int new_size)
 
double Dot (const Matrix_ps &matB)
 
std::complex< double > Dot_c (const Matrix_ps &matB)
 
void Increment (const Matrix_ps &matB, double alpha=1.0, double threshold=0.0)
 
void PairwiseMultiply (const Matrix_ps &matA, const Matrix_ps &matB)
 Elementwise multiplication. C_ij = A_ij * B_ij. Also known as a Hadamard. More...
 
void Gemm (const Matrix_ps &matA, const Matrix_ps &matB, PMatrixMemoryPool &memory_pool, double alpha=1.0, double beta=0.0, double threshold=0.0)
 
void Scale (double constant)
 
double Norm () const
 compute the norm of a matrix.
 
double Trace () const
 compute the trace of a matrix.
 
 ~Matrix_ps ()
 Destructor.
 

Friends

class LoadBalancer
 
class SolverBase
 
template<class T >
class TripletList
 
class PMatrixMemoryPool
 
class MatrixMapper
 
class MatrixConversion
 

Detailed Description

A Module For Performing Distributed Sparse Matrix Operations.

Constructor & Destructor Documentation

◆ Matrix_ps() [1/5]

NTPoly::Matrix_ps::Matrix_ps ( int  matrix_dimension)

Construct an empty matrix.

Parameters
matrix_dimensionsize fo the matrix.

◆ Matrix_ps() [2/5]

NTPoly::Matrix_ps::Matrix_ps ( int  matrix_dimension,
const ProcessGrid grid 
)

Construct an empty matrix.

Parameters
matrix_dimensionsize fo the matrix.
gridthe process grid this matrix is distributed on.

◆ Matrix_ps() [3/5]

NTPoly::Matrix_ps::Matrix_ps ( std::string  file_name,
bool  is_binary = false 
)

Construct a matrix from file.

Parameters
file_namename of the file to build from.
is_binarytrue if the file is a binary file.

◆ Matrix_ps() [4/5]

NTPoly::Matrix_ps::Matrix_ps ( std::string  file_name,
const ProcessGrid grid,
bool  is_binary = false 
)

Construct a matrix from file.

Parameters
file_namename of the file to build from.
is_binarytrue if the file is a binary file.
gridthe process grid this matrix is distributed on.

◆ Matrix_ps() [5/5]

NTPoly::Matrix_ps::Matrix_ps ( const Matrix_ps matB)

Copy constructor.

Parameters
matBmatrix to copy from.

Member Function Documentation

◆ Dot()

double NTPoly::Matrix_ps::Dot ( const Matrix_ps matB)

this = dot(this,matB)

Parameters
matBthe matrix to dot.

◆ Dot_c()

complex< double > NTPoly::Matrix_ps::Dot_c ( const Matrix_ps matB)

this = dot(this,matB)

Parameters
matBthe matrix to dot.

◆ FillDistributedPermutation()

void NTPoly::Matrix_ps::FillDistributedPermutation ( const Permutation lb,
bool  permuterows = true 
)

Fill the matrix based on a permutation.

Parameters
lbthe permutation.
permuterowstrue if this is a row permutation matrix.

◆ FillFromTripletList() [1/2]

void NTPoly::Matrix_ps::FillFromTripletList ( const TripletList_c triplet_list)

Fill in the matrix based on the contents of triplet lists.

Parameters
triplet_listlist of values. Need to be absolute coordinates.

◆ FillFromTripletList() [2/2]

void NTPoly::Matrix_ps::FillFromTripletList ( const TripletList_r triplet_list)

Fill in the matrix based on the contents of triplet lists.

Parameters
triplet_listlist of values. Need to be absolute coordinates.

◆ Gemm()

void NTPoly::Matrix_ps::Gemm ( const Matrix_ps matA,
const Matrix_ps matB,
PMatrixMemoryPool memory_pool,
double  alpha = 1.0,
double  beta = 0.0,
double  threshold = 0.0 
)

this := alpha*matA*matB+ beta*this (GEMM)

Parameters
matAfirst mat.
matBsecond mat.
memory_poolmemory pool for intermediates.
alphascaling factor.
betascaling factor.
thresholdfor flushing small values.

◆ GetMatrixBlock() [1/2]

void NTPoly::Matrix_ps::GetMatrixBlock ( TripletList_c triplet_list,
int  start_row,
int  end_row,
int  start_column,
int  end_column 
)

Extract an arbitrary block of a matrix into a triplet list. Block is defined by the row/column start/end values. This is slower than GetTripletList, because communication is required. Data is returned with absolute coordinates.

Parameters
triplet_listthe list to fill.
start_rowthe starting row for data to store on this process.
end_rowthe ending row for data to store on this process.
start_columnthe starting col for data to store on this process
end_columnthe ending col for data to store on this process

◆ GetMatrixBlock() [2/2]

void NTPoly::Matrix_ps::GetMatrixBlock ( TripletList_r triplet_list,
int  start_row,
int  end_row,
int  start_column,
int  end_column 
)

Extract an arbitrary block of a matrix into a triplet list. Block is defined by the row/column start/end values. This is slower than GetTripletList, because communication is required. Data is returned with absolute coordinates.

Parameters
triplet_listthe list to fill.
start_rowthe starting row for data to store on this process.
end_rowthe ending row for data to store on this process.
start_columnthe starting col for data to store on this process
end_columnthe ending col for data to store on this process

◆ GetMatrixSlice()

void NTPoly::Matrix_ps::GetMatrixSlice ( Matrix_ps submatrix,
int  start_row,
int  end_row,
int  start_column,
int  end_column 
)

Copy an arbitrary slice from a matrix into a new smaller matrix. NTPoly only works with square matrices, so if the number of rows and columns is different the matrix is resized to the maximum size.

Parameters
submatrixthe slice to fill.
start_rowthe starting row to include in this matrix.
end_rowthe ending row to include in this matrix.
start_columnthe starting column to include in this matrix.
end_columnthe last column to include in this matrix.

◆ GetTripletList() [1/2]

void NTPoly::Matrix_ps::GetTripletList ( TripletList_c triplet_list) const

Extracts a triplet list of the data that is stored on this process. Data is returned with absolute coordinates.

Parameters
triplet_listthe list to fill.

◆ GetTripletList() [2/2]

void NTPoly::Matrix_ps::GetTripletList ( TripletList_r triplet_list) const

Extracts a triplet list of the data that is stored on this process. Data is returned with absolute coordinates.

Parameters
triplet_listthe list to fill.

◆ Increment()

void NTPoly::Matrix_ps::Increment ( const Matrix_ps matB,
double  alpha = 1.0,
double  threshold = 0.0 
)

this = alpha*MatB + this (AXPY)

Parameters
matBthe matrix to add.
alphascaling factor.
thresholdfor flushing small values.

◆ PairwiseMultiply()

void NTPoly::Matrix_ps::PairwiseMultiply ( const Matrix_ps matA,
const Matrix_ps matB 
)

Elementwise multiplication. C_ij = A_ij * B_ij. Also known as a Hadamard.

Parameters
matAfirst mat.
matBsecond mat.

◆ Resize()

void NTPoly::Matrix_ps::Resize ( int  new_size)

Change the size of a matrix. If the new size is smaller, then values outside that range are deleted. IF the new size is bigger, zero padding is applied. Warning: this requires a full data redistribution.

◆ Scale()

void NTPoly::Matrix_ps::Scale ( double  constant)

scale the matrix by a constatn. constant the value to scale by.

◆ WriteToBinary()

void NTPoly::Matrix_ps::WriteToBinary ( std::string  file_name) const

Write the matrix to a custom binary format.

Parameters
file_namefile to write to.

◆ WriteToMatrixMarket()

void NTPoly::Matrix_ps::WriteToMatrixMarket ( std::string  file_name) const

Write the matrix to the matrix market format.

Parameters
file_namefile to write to.

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