#include <BFSFriends.h>
Classes | |
class | ScalarReadSaveHandler |
Public Types | |
typedef DER::LocalIT | LocalIT |
typedef DER::LocalNT | LocalNT |
typedef IT | GlobalIT |
typedef NT | GlobalNT |
Public Member Functions | |
SpParMat () | |
Deprecated. Don't call the default constructor. More... | |
SpParMat (MPI_Comm world) | |
SpParMat (std::shared_ptr< CommGrid > grid) | |
SpParMat (DER *myseq, std::shared_ptr< CommGrid > grid) | |
SpParMat (std::ifstream &input, MPI_Comm &world) | |
SpParMat (DER *myseq, MPI_Comm &world) | |
template<class DELIT > | |
SpParMat (const DistEdgeList< DELIT > &rhs, bool removeloops=true) | |
SpParMat (const SpParMat< IT, NT, DER > &rhs) | |
SpParMat (IT total_m, IT total_n, const FullyDistVec< IT, IT > &, const FullyDistVec< IT, IT > &, const FullyDistVec< IT, NT > &, bool SumDuplicates=false) | |
All vectors are zero-based indexed (as usual) More... | |
SpParMat (IT total_m, IT total_n, const FullyDistVec< IT, IT > &, const FullyDistVec< IT, IT > &, const NT &, bool SumDuplicates=false) | |
SpParMat< IT, NT, DER > & | operator= (const SpParMat< IT, NT, DER > &rhs) |
SpParMat< IT, NT, DER > & | operator+= (const SpParMat< IT, NT, DER > &rhs) |
~SpParMat () | |
template<typename SR > | |
void | Square () |
float | LoadImbalance () const |
void | Transpose () |
void | FreeMemory () |
void | EWiseMult (const SpParMat< IT, NT, DER > &rhs, bool exclude) |
void | EWiseScale (const DenseParMat< IT, NT > &rhs) |
void | Find (FullyDistVec< IT, IT > &, FullyDistVec< IT, IT > &, FullyDistVec< IT, NT > &) const |
void | Find (FullyDistVec< IT, IT > &, FullyDistVec< IT, IT > &) const |
template<typename _BinaryOperation > | |
void | DimApply (Dim dim, const FullyDistVec< IT, NT > &v, _BinaryOperation __binary_op) |
template<typename _BinaryOperation , typename _UnaryOperation > | |
FullyDistVec< IT, NT > | Reduce (Dim dim, _BinaryOperation __binary_op, NT id, _UnaryOperation __unary_op) const |
template<typename _BinaryOperation > | |
FullyDistVec< IT, NT > | Reduce (Dim dim, _BinaryOperation __binary_op, NT id) const |
template<typename VT , typename GIT , typename _BinaryOperation , typename _UnaryOperation > | |
void | Reduce (FullyDistVec< GIT, VT > &rvec, Dim dim, _BinaryOperation __binary_op, VT id, _UnaryOperation __unary_op) const |
template<typename VT , typename GIT , typename _BinaryOperation > | |
void | Reduce (FullyDistVec< GIT, VT > &rvec, Dim dim, _BinaryOperation __binary_op, VT id) const |
template<typename VT , typename GIT > | |
bool | Kselect (FullyDistVec< GIT, VT > &rvec, IT k_limit, int kselectVersion) const |
template<typename VT , typename GIT > | |
bool | Kselect (FullyDistSpVec< GIT, VT > &kth, IT k_limit, int kselectVersion) const |
template<typename VT , typename GIT , typename _UnaryOperation > | |
bool | Kselect1 (FullyDistVec< GIT, VT > &rvec, IT k_limit, _UnaryOperation __unary_op) const |
template<typename VT , typename GIT , typename _UnaryOperation > | |
bool | Kselect1 (FullyDistSpVec< GIT, VT > &rvec, IT k_limit, _UnaryOperation __unary_op) const |
template<typename VT , typename GIT > | |
bool | Kselect1 (FullyDistVec< GIT, VT > &rvec, IT k_limit) const |
template<typename VT , typename GIT > | |
bool | Kselect2 (FullyDistVec< GIT, VT > &rvec, IT k_limit) const |
IT | Bandwidth () const |
IT | Profile () const |
template<typename VT , typename GIT , typename _BinaryOperation > | |
void | MaskedReduce (FullyDistVec< GIT, VT > &rvec, FullyDistSpVec< GIT, VT > &mask, Dim dim, _BinaryOperation __binary_op, VT id, bool exclude=false) const |
template<typename VT , typename GIT , typename _BinaryOperation , typename _UnaryOperation > | |
void | MaskedReduce (FullyDistVec< GIT, VT > &rvec, FullyDistSpVec< GIT, VT > &mask, Dim dim, _BinaryOperation __binary_op, VT id, _UnaryOperation __unary_op, bool exclude=false) const |
template<typename _UnaryOperation > | |
void | Apply (_UnaryOperation __unary_op) |
IT | RemoveLoops () |
void | AddLoops (NT loopval, bool replaceExisting=false) |
void | AddLoops (FullyDistVec< IT, NT > loopvals, bool replaceExisting=false) |
template<typename LIT , typename OT > | |
void | OptimizeForGraph500 (OptBuf< LIT, OT > &optbuf) |
void | ActivateThreading (int numsplits) |
template<typename _UnaryOperation > | |
SpParMat< IT, NT, DER > | PruneI (_UnaryOperation __unary_op, bool inPlace=true) |
template<typename _UnaryOperation > | |
SpParMat< IT, NT, DER > | Prune (_UnaryOperation __unary_op, bool inPlace=true) |
template<typename _BinaryOperation > | |
SpParMat< IT, NT, DER > | PruneColumn (const FullyDistVec< IT, NT > &pvals, _BinaryOperation __binary_op, bool inPlace=true) |
Prune every column of a sparse matrix based on pvals. More... | |
template<typename _BinaryOperation > | |
SpParMat< IT, NT, DER > | PruneColumn (const FullyDistSpVec< IT, NT > &pvals, _BinaryOperation __binary_op, bool inPlace=true) |
template<typename _BinaryOperation > | |
void | UpdateDense (DenseParMat< IT, NT > &rhs, _BinaryOperation __binary_op) const |
void | Dump (std::string filename) const |
void | PrintInfo () const |
template<typename NNT , typename NDER > | |
operator SpParMat< IT, NNT, NDER > () const | |
Type conversion operator. More... | |
template<typename NIT , typename NNT , typename NDER > | |
operator SpParMat< NIT, NNT, NDER > () const | |
Type conversion operator (for indices as well) More... | |
IT | getnrow () const |
IT | getncol () const |
IT | getnnz () const |
template<typename LIT > | |
int | Owner (IT total_m, IT total_n, IT grow, IT gcol, LIT &lrow, LIT &lcol) const |
SpParMat< IT, NT, DER > | SubsRefCol (const std::vector< IT > &ci) const |
Column indexing with special parallel semantics. More... | |
template<typename SelectFirstSR , typename SelectSecondSR > | |
SpParMat< IT, NT, DER > | SubsRef_SR (const FullyDistVec< IT, IT > &ri, const FullyDistVec< IT, IT > &ci, bool inplace=false) |
General indexing with serial semantics. More... | |
SpParMat< IT, NT, DER > | operator() (const FullyDistVec< IT, IT > &ri, const FullyDistVec< IT, IT > &ci, bool inplace=false) |
void | Prune (const FullyDistVec< IT, IT > &ri, const FullyDistVec< IT, IT > &ci) |
prune all entries whose row indices are in ri and column indices are in ci More... | |
void | SpAsgn (const FullyDistVec< IT, IT > &ri, const FullyDistVec< IT, IT > &ci, SpParMat< IT, NT, DER > &B) |
bool | operator== (const SpParMat< IT, NT, DER > &rhs) const |
template<typename _BinaryOperation > | |
void | ParallelReadMM (const std::string &filename, bool onebased, _BinaryOperation BinOp) |
template<typename _BinaryOperation > | |
FullyDistVec< IT, std::array< char, MAXVERTNAME > > | ReadGeneralizedTuples (const std::string &, _BinaryOperation) |
template<class HANDLER > | |
void | ReadDistribute (const std::string &filename, int master, bool nonum, HANDLER handler, bool transpose=false, bool pario=false) |
void | ReadDistribute (const std::string &filename, int master, bool nonum=false, bool pario=false) |
template<class HANDLER > | |
void | SaveGathered (std::string filename, HANDLER handler, bool transpose=false) const |
void | SaveGathered (std::string filename) const |
std::ofstream & | put (std::ofstream &outfile) const |
std::shared_ptr< CommGrid > | getcommgrid () const |
DER::LocalIT | getlocalrows () const |
DER::LocalIT | getlocalcols () const |
DER::LocalIT | getlocalnnz () const |
DER & | seq () |
DER * | seqptr () |
template<typename _BinaryOperation , typename LIT > | |
void | SparseCommon (std::vector< std::vector< std::tuple< LIT, LIT, NT > > > &data, LIT locsize, IT total_m, IT total_n, _BinaryOperation BinOp) |
Friends | |
template<class IU , class NU > | |
class | DenseParMat |
template<typename SR , typename NUO , typename UDERO , typename IU , typename NU1 , typename NU2 , typename UDER1 , typename UDER2 > | |
SpParMat< IU, NUO, UDERO > | Mult_AnXBn_DoubleBuff (SpParMat< IU, NU1, UDER1 > &A, SpParMat< IU, NU2, UDER2 > &B, bool clearA, bool clearB) |
Friend declarations. More... | |
template<typename SR , typename NUO , typename UDERO , typename IU , typename NU1 , typename NU2 , typename UDER1 , typename UDER2 > | |
SpParMat< IU, NUO, UDERO > | Mult_AnXBn_Synch (SpParMat< IU, NU1, UDER1 > &A, SpParMat< IU, NU2, UDER2 > &B, bool clearA, bool clearB) |
template<typename IU , typename NU1 , typename NU2 , typename UDERA , typename UDERB > | |
int64_t | EstPerProcessNnzSUMMA (SpParMat< IU, NU1, UDERA > &A, SpParMat< IU, NU2, UDERB > &B) |
template<typename SR , typename IU , typename NU1 , typename NU2 , typename UDER1 , typename UDER2 > | |
SpParMat< IU, typename promote_trait< NU1, NU2 >::T_promote, typename promote_trait< UDER1, UDER2 >::T_promote > | Mult_AnXBn_ActiveTarget (const SpParMat< IU, NU1, UDER1 > &A, const SpParMat< IU, NU2, UDER2 > &B) |
template<typename SR , typename IU , typename NU1 , typename NU2 , typename UDER1 , typename UDER2 > | |
SpParMat< IU, typename promote_trait< NU1, NU2 >::T_promote, typename promote_trait< UDER1, UDER2 >::T_promote > | Mult_AnXBn_PassiveTarget (const SpParMat< IU, NU1, UDER1 > &A, const SpParMat< IU, NU2, UDER2 > &B) |
template<typename SR , typename IU , typename NU1 , typename NU2 , typename UDER1 , typename UDER2 > | |
SpParMat< IU, typename promote_trait< NU1, NU2 >::T_promote, typename promote_trait< UDER1, UDER2 >::T_promote > | Mult_AnXBn_Fence (const SpParMat< IU, NU1, UDER1 > &A, const SpParMat< IU, NU2, UDER2 > &B) |
template<typename SR , typename NUO , typename UDERO , typename IU , typename NU1 , typename NU2 , typename UDERA , typename UDERB > | |
SpParMat< IU, NUO, UDERO > | MemEfficientSpGEMM (SpParMat< IU, NU1, UDERA > &A, SpParMat< IU, NU2, UDERB > &B, int phases, NUO hardThreshold, IU selectNum, IU recoverNum, NUO recoverPct, int kselectVersion, int64_t perProcessMem) |
template<typename SR , typename IU , typename NUM , typename NUV , typename UDER > | |
FullyDistSpVec< IU, typename promote_trait< NUM, NUV >::T_promote > | SpMV (const SpParMat< IU, NUM, UDER > &A, const FullyDistSpVec< IU, NUV > &x) |
template<typename SR , typename IU , typename NUM , typename NUV , typename UDER > | |
FullyDistVec< IU, typename promote_trait< NUM, NUV >::T_promote > | SpMV (const SpParMat< IU, NUM, UDER > &A, const FullyDistVec< IU, NUV > &x) |
template<typename SR , typename IU , typename NUM , typename UDER > | |
FullyDistSpVec< IU, typename promote_trait< NUM, IU >::T_promote > | SpMV (const SpParMat< IU, NUM, UDER > &A, const FullyDistSpVec< IU, IU > &x, bool indexisvalue) |
template<typename SR , typename IVT , typename OVT , typename IU , typename NUM , typename UDER > | |
void | SpMV (const SpParMat< IU, NUM, UDER > &A, const FullyDistSpVec< IU, IVT > &x, FullyDistSpVec< IU, OVT > &y, bool indexisvalue) |
template<typename SR , typename IVT , typename OVT , typename IU , typename NUM , typename UDER > | |
void | SpMV (const SpParMat< IU, NUM, UDER > &A, const FullyDistSpVec< IU, IVT > &x, FullyDistSpVec< IU, OVT > &y, bool indexisvalue, OptBuf< int32_t, OVT > &optbuf) |
template<typename IU , typename NU1 , typename NU2 , typename UDER1 , typename UDER2 > | |
SpParMat< IU, typename promote_trait< NU1, NU2 >::T_promote, typename promote_trait< UDER1, UDER2 >::T_promote > | EWiseMult (const SpParMat< IU, NU1, UDER1 > &A, const SpParMat< IU, NU2, UDER2 > &B, bool exclude) |
template<typename RETT , typename RETDER , typename IU , typename NU1 , typename NU2 , typename UDERA , typename UDERB , typename _BinaryOperation > | |
SpParMat< IU, RETT, RETDER > | EWiseApply (const SpParMat< IU, NU1, UDERA > &A, const SpParMat< IU, NU2, UDERB > &B, _BinaryOperation __binary_op, bool notB, const NU2 &defaultBVal) |
template<typename RETT , typename RETDER , typename IU , typename NU1 , typename NU2 , typename UDERA , typename UDERB , typename _BinaryOperation , typename _BinaryPredicate > | |
SpParMat< IU, RETT, RETDER > | EWiseApply (const SpParMat< IU, NU1, UDERA > &A, const SpParMat< IU, NU2, UDERB > &B, _BinaryOperation __binary_op, _BinaryPredicate do_op, bool allowANulls, bool allowBNulls, const NU1 &ANullVal, const NU2 &BNullVal, const bool allowIntersect, const bool useExtendedBinOp) |
template<typename SR , typename IVT , typename OVT , typename IU , typename NUM , typename UDER > | |
void | LocalSpMV (const SpParMat< IU, NUM, UDER > &A, int rowneighs, OptBuf< int32_t, OVT > &optbuf, int32_t *&indacc, IVT *&numacc, int32_t *&sendindbuf, OVT *&sendnumbuf, int *&sdispls, int *sendcnt, int accnz, bool indexisvalue, PreAllocatedSPA< OVT > &SPA) |
template<typename VT , typename IU , typename UDER > | |
void | LocalSpMV (const SpParMat< IU, bool, UDER > &A, int rowneighs, OptBuf< int32_t, VT > &optbuf, int32_t *&indacc, VT *&numacc, int *sendcnt, int accnz) |
template<typename IU , typename NU , typename UDER > | |
std::ofstream & | operator<< (std::ofstream &outfile, const SpParMat< IU, NU, UDER > &s) |
Fundamental 2D distributed sparse matrix class The index type IT is encapsulated by the class in a way that it is only guarantee that the implementation will ensure the requested semantics. For instance, if IT=int64 then the implementation can still use 32 bit local indices but it should return correct 64-bit numbers in its functions. In other words, DER can be SpDCCols<int32_t, double> while IT=int64_t
Definition at line 47 of file BFSFriends.h.
typedef IT combblas::SpParMat< IT, NT, DER >::GlobalIT |
Definition at line 73 of file SpParMat.h.
typedef NT combblas::SpParMat< IT, NT, DER >::GlobalNT |
Definition at line 74 of file SpParMat.h.
typedef DER::LocalIT combblas::SpParMat< IT, NT, DER >::LocalIT |
Definition at line 71 of file SpParMat.h.
typedef DER::LocalNT combblas::SpParMat< IT, NT, DER >::LocalNT |
Definition at line 72 of file SpParMat.h.
combblas::SpParMat< IT, NT, DER >::SpParMat | ( | ) |
Deprecated. Don't call the default constructor.
Definition at line 89 of file SpParMat.cpp.
combblas::SpParMat< IT, NT, DER >::SpParMat | ( | MPI_Comm | world | ) |
If there is a single file read by the master process only, use this and then call ReadDistribute()
Definition at line 101 of file SpParMat.cpp.
combblas::SpParMat< IT, NT, DER >::SpParMat | ( | std::shared_ptr< CommGrid > | grid | ) |
Definition at line 80 of file SpParMat.cpp.
combblas::SpParMat< IT, NT, DER >::SpParMat | ( | DER * | myseq, |
std::shared_ptr< CommGrid > | grid | ||
) |
Definition at line 73 of file SpParMat.cpp.
combblas::SpParMat< IT, NT, DER >::SpParMat | ( | std::ifstream & | input, |
MPI_Comm & | world | ||
) |
If every processor has a distinct triples file such as {A_0, A_1, A_2,... A_p} for p processors
Definition at line 53 of file SpParMat.cpp.
combblas::SpParMat< IT, NT, DER >::SpParMat | ( | DER * | myseq, |
MPI_Comm & | world | ||
) |
Definition at line 66 of file SpParMat.cpp.
combblas::SpParMat< IT, NT, DER >::SpParMat | ( | const DistEdgeList< DELIT > & | rhs, |
bool | removeloops = true |
||
) |
Definition at line 2578 of file SpParMat.cpp.
combblas::SpParMat< IT, NT, DER >::SpParMat | ( | const SpParMat< IT, NT, DER > & | rhs | ) |
Definition at line 619 of file SpParMat.cpp.
combblas::SpParMat< IT, NT, DER >::SpParMat | ( | IT | total_m, |
IT | total_n, | ||
const FullyDistVec< IT, IT > & | distrows, | ||
const FullyDistVec< IT, IT > & | distcols, | ||
const FullyDistVec< IT, NT > & | distvals, | ||
bool | SumDuplicates = false |
||
) |
All vectors are zero-based indexed (as usual)
Definition at line 2504 of file SpParMat.cpp.
combblas::SpParMat< IT, NT, DER >::SpParMat | ( | IT | total_m, |
IT | total_n, | ||
const FullyDistVec< IT, IT > & | distrows, | ||
const FullyDistVec< IT, IT > & | distcols, | ||
const NT & | val, | ||
bool | SumDuplicates = false |
||
) |
Definition at line 2542 of file SpParMat.cpp.
combblas::SpParMat< IT, NT, DER >::~SpParMat | ( | ) |
Definition at line 110 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::ActivateThreading | ( | int | numsplits | ) |
Definition at line 2881 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::AddLoops | ( | NT | loopval, |
bool | replaceExisting = false |
||
) |
Definition at line 2714 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::AddLoops | ( | FullyDistVec< IT, NT > | loopvals, |
bool | replaceExisting = false |
||
) |
Definition at line 2731 of file SpParMat.cpp.
|
inline |
Definition at line 145 of file SpParMat.h.
IT combblas::SpParMat< IT, NT, DER >::Bandwidth | ( | ) | const |
Definition at line 1598 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::DimApply | ( | Dim | dim, |
const FullyDistVec< IT, NT > & | v, | ||
_BinaryOperation | __binary_op | ||
) |
Definition at line 704 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::Dump | ( | std::string | filename | ) | const |
Definition at line 562 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::EWiseMult | ( | const SpParMat< IT, NT, DER > & | rhs, |
bool | exclude | ||
) |
Definition at line 2335 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::EWiseScale | ( | const DenseParMat< IT, NT > & | rhs | ) |
Definition at line 2350 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::Find | ( | FullyDistVec< IT, IT > & | distrows, |
FullyDistVec< IT, IT > & | distcols, | ||
FullyDistVec< IT, NT > & | distvals | ||
) | const |
The input parameters' identity (zero) elements as well as their communication grid is preserved while outputting
Definition at line 4100 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::Find | ( | FullyDistVec< IT, IT > & | distrows, |
FullyDistVec< IT, IT > & | distcols | ||
) | const |
The input parameters' identity (zero) elements as well as their communication grid is preserved while outputting
Definition at line 4178 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::FreeMemory | ( | ) |
Definition at line 116 of file SpParMat.cpp.
|
inline |
Definition at line 275 of file SpParMat.h.
|
inline |
Definition at line 277 of file SpParMat.h.
|
inline |
Definition at line 278 of file SpParMat.h.
|
inline |
Definition at line 276 of file SpParMat.h.
IT combblas::SpParMat< IT, NT, DER >::getncol | ( | ) | const |
Definition at line 694 of file SpParMat.cpp.
IT combblas::SpParMat< IT, NT, DER >::getnnz | ( | ) | const |
Definition at line 676 of file SpParMat.cpp.
IT combblas::SpParMat< IT, NT, DER >::getnrow | ( | ) | const |
Definition at line 685 of file SpParMat.cpp.
bool combblas::SpParMat< IT, NT, DER >::Kselect | ( | FullyDistVec< GIT, VT > & | rvec, |
IT | k_limit, | ||
int | kselectVersion | ||
) | const |
Returns true if Kselect algorithm is invoked for at least one column Otherwise, returns false if false, rvec contains either the minimum entry in each column or zero
Definition at line 1063 of file SpParMat.cpp.
bool combblas::SpParMat< IT, NT, DER >::Kselect | ( | FullyDistSpVec< GIT, VT > & | kth, |
IT | k_limit, | ||
int | kselectVersion | ||
) | const |
Kselect wrapper for a select columns of the matrix Indices of the input sparse vectors kth denote the queried columns of the matrix Upon return, values of kth stores the kth entries of the queried columns Returns true if Kselect algorithm is invoked for at least one column Otherwise, returns false
Definition at line 1023 of file SpParMat.cpp.
bool combblas::SpParMat< IT, NT, DER >::Kselect1 | ( | FullyDistVec< GIT, VT > & | rvec, |
IT | k_limit, | ||
_UnaryOperation | __unary_op | ||
) | const |
Definition at line 1094 of file SpParMat.cpp.
bool combblas::SpParMat< IT, NT, DER >::Kselect1 | ( | FullyDistSpVec< GIT, VT > & | rvec, |
IT | k_limit, | ||
_UnaryOperation | __unary_op | ||
) | const |
Definition at line 1315 of file SpParMat.cpp.
bool combblas::SpParMat< IT, NT, DER >::Kselect1 | ( | FullyDistVec< GIT, VT > & | rvec, |
IT | k_limit | ||
) | const |
bool combblas::SpParMat< IT, NT, DER >::Kselect2 | ( | FullyDistVec< GIT, VT > & | rvec, |
IT | k_limit | ||
) | const |
identify the k-th maximum element in each column of a matrix if the number of nonzeros in a column is less than k, return the numeric_limits<NT>::min() This is an efficient implementation of the Saukas/Song algorithm http://www.ime.usp.br/~einar/select/INDEX.HTM Preferred for large k values
Definition at line 309 of file SpParMat.cpp.
float combblas::SpParMat< IT, NT, DER >::LoadImbalance | ( | ) | const |
Definition at line 665 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::MaskedReduce | ( | FullyDistVec< GIT, VT > & | rvec, |
FullyDistSpVec< GIT, VT > & | mask, | ||
Dim | dim, | ||
_BinaryOperation | __binary_op, | ||
VT | id, | ||
bool | exclude = false |
||
) | const |
Definition at line 1704 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::MaskedReduce | ( | FullyDistVec< GIT, VT > & | rvec, |
FullyDistSpVec< GIT, VT > & | mask, | ||
Dim | dim, | ||
_BinaryOperation | __binary_op, | ||
VT | id, | ||
_UnaryOperation | __unary_op, | ||
bool | exclude = false |
||
) | const |
Reduce along the column into a vector
[in] | mask | {A sparse vector indicating row indices included/excluded (based on exclude argument) in the reduction } |
[in] | __binary_op | {the operation used for reduction; examples: max, min, plus, multiply, and, or. Its parameters and return type are all VT} |
[in] | id | {scalar that is used as the identity for __binary_op; examples: zero, infinity} |
[in] | __unary_op | {optional unary operation applied to nonzeros before the __binary_op; examples: 1/x, x^2} |
[in] | exclude | {if true, masked row indices are included in the reduction} |
[out] | rvec | {the return vector, specified as an output parameter to allow arbitrary return types via VT} |
Definition at line 1725 of file SpParMat.cpp.
combblas::SpParMat< IT, NT, DER >::operator SpParMat< IT, NNT, NDER > | ( | ) | const |
Type conversion operator.
Definition at line 1847 of file SpParMat.cpp.
combblas::SpParMat< IT, NT, DER >::operator SpParMat< NIT, NNT, NDER > | ( | ) | const |
Type conversion operator (for indices as well)
Change index type as well.
Definition at line 1856 of file SpParMat.cpp.
|
inline |
Definition at line 216 of file SpParMat.h.
SpParMat< IT, NT, DER > & combblas::SpParMat< IT, NT, DER >::operator+= | ( | const SpParMat< IT, NT, DER > & | rhs | ) |
Definition at line 644 of file SpParMat.cpp.
SpParMat< IT, NT, DER > & combblas::SpParMat< IT, NT, DER >::operator= | ( | const SpParMat< IT, NT, DER > & | rhs | ) |
Check agains NULL is probably unneccessary, delete won't fail on NULL But useful in the presence of a user defined "operator delete" which fails to check NULL
Definition at line 628 of file SpParMat.cpp.
bool combblas::SpParMat< IT, NT, DER >::operator== | ( | const SpParMat< IT, NT, DER > & | rhs | ) | const |
Definition at line 2411 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::OptimizeForGraph500 | ( | OptBuf< LIT, OT > & | optbuf | ) |
Pre-allocates buffers for row communication additionally (if GATHERVOPT is defined, incomplete as of March 2016):
Definition at line 2780 of file SpParMat.cpp.
int combblas::SpParMat< IT, NT, DER >::Owner | ( | IT | total_m, |
IT | total_n, | ||
IT | grow, | ||
IT | gcol, | ||
LIT & | lrow, | ||
LIT & | lcol | ||
) | const |
[in] | grow | {global row index} |
[in] | gcol | {global column index} |
[out] | lrow | {row index local to the owner} |
[out] | lcol | {col index local to the owner} |
Definition at line 4270 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::ParallelReadMM | ( | const std::string & | filename, |
bool | onebased, | ||
_BinaryOperation | BinOp | ||
) |
Handles all sorts of orderings, even duplicates (what happens to them is determined by BinOp) Requires proper matrix market banner at the moment Replaces ReadDistribute for properly load balanced input in matrix market format
Definition at line 3417 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::PrintInfo | ( | ) | const |
Definition at line 2387 of file SpParMat.cpp.
IT combblas::SpParMat< IT, NT, DER >::Profile | ( | ) | const |
Definition at line 1641 of file SpParMat.cpp.
|
inline |
Definition at line 175 of file SpParMat.h.
void combblas::SpParMat< IT, NT, DER >::Prune | ( | const FullyDistVec< IT, IT > & | ri, |
const FullyDistVec< IT, IT > & | ci | ||
) |
prune all entries whose row indices are in ri and column indices are in ci
Definition at line 2149 of file SpParMat.cpp.
SpParMat< IT, NT, DER > combblas::SpParMat< IT, NT, DER >::PruneColumn | ( | const FullyDistVec< IT, NT > & | pvals, |
_BinaryOperation | __binary_op, | ||
bool | inPlace = true |
||
) |
Prune every column of a sparse matrix based on pvals.
Definition at line 2185 of file SpParMat.cpp.
SpParMat< IT, NT, DER > combblas::SpParMat< IT, NT, DER >::PruneColumn | ( | const FullyDistSpVec< IT, NT > & | pvals, |
_BinaryOperation | __binary_op, | ||
bool | inPlace = true |
||
) |
Prune columns of a sparse matrix selected by nonzero indices of pvals Each selected column is pruned by corresponding values in pvals
Definition at line 2264 of file SpParMat.cpp.
|
inline |
Definition at line 159 of file SpParMat.h.
std::ofstream & combblas::SpParMat< IT, NT, DER >::put | ( | std::ofstream & | outfile | ) | const |
Definition at line 4248 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::ReadDistribute | ( | const std::string & | filename, |
int | master, | ||
bool | nonum, | ||
HANDLER | handler, | ||
bool | transpose = false , |
||
bool | pario = false |
||
) |
Handles all sorts of orderings as long as there are no duplicates May perform better when the data is already reverse column-sorted (i.e. in decreasing order) if nonum is true, then numerics are not supplied and they are assumed to be all 1's
Definition at line 3560 of file SpParMat.cpp.
|
inline |
Definition at line 264 of file SpParMat.h.
FullyDistVec< IT, std::array< char, MAXVERTNAME > > combblas::SpParMat< IT, NT, DER >::ReadGeneralizedTuples | ( | const std::string & | filename, |
_BinaryOperation | BinOp | ||
) |
Handles all sorts of orderings as long as there are no duplicates Does not take matrix market banner (only tuples) Data can be load imbalanced and the vertex labels can be arbitrary strings Replaces ReadDistribute for imbalanced arbitrary input in tuples format
Definition at line 3319 of file SpParMat.cpp.
FullyDistVec< IT, NT > combblas::SpParMat< IT, NT, DER >::Reduce | ( | Dim | dim, |
_BinaryOperation | __binary_op, | ||
NT | id, | ||
_UnaryOperation | __unary_op | ||
) | const |
Definition at line 791 of file SpParMat.cpp.
FullyDistVec< IT, NT > combblas::SpParMat< IT, NT, DER >::Reduce | ( | Dim | dim, |
_BinaryOperation | __binary_op, | ||
NT | id | ||
) | const |
Definition at line 819 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::Reduce | ( | FullyDistVec< GIT, VT > & | rvec, |
Dim | dim, | ||
_BinaryOperation | __binary_op, | ||
VT | id, | ||
_UnaryOperation | __unary_op | ||
) | const |
Definition at line 856 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::Reduce | ( | FullyDistVec< GIT, VT > & | rvec, |
Dim | dim, | ||
_BinaryOperation | __binary_op, | ||
VT | id | ||
) | const |
Definition at line 848 of file SpParMat.cpp.
IT combblas::SpParMat< IT, NT, DER >::RemoveLoops | ( | ) |
Definition at line 2695 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::SaveGathered | ( | std::string | filename, |
HANDLER | handler, | ||
bool | transpose = false |
||
) | const |
Definition at line 3027 of file SpParMat.cpp.
|
inline |
Definition at line 271 of file SpParMat.h.
|
inline |
Definition at line 279 of file SpParMat.h.
|
inline |
Definition at line 280 of file SpParMat.h.
void combblas::SpParMat< IT, NT, DER >::SparseCommon | ( | std::vector< std::vector< std::tuple< LIT, LIT, NT > > > & | data, |
LIT | locsize, | ||
IT | total_m, | ||
IT | total_n, | ||
_BinaryOperation | BinOp | ||
) |
Private function that carries code common to different sparse() constructors Before this call, commGrid is already set
Definition at line 2426 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::SpAsgn | ( | const FullyDistVec< IT, IT > & | ri, |
const FullyDistVec< IT, IT > & | ci, | ||
SpParMat< IT, NT, DER > & | B | ||
) |
Definition at line 2106 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::Square | ( | ) |
Parallel routine that returns A*A on the semiring SR Uses only MPI-1 features (relies on simple blocking broadcast)
Definition at line 2893 of file SpParMat.cpp.
SpParMat< IT, NT, DER > combblas::SpParMat< IT, NT, DER >::SubsRef_SR | ( | const FullyDistVec< IT, IT > & | ri, |
const FullyDistVec< IT, IT > & | ci, | ||
bool | inplace = false |
||
) |
General indexing with serial semantics.
Generalized sparse matrix indexing (ri/ci are 0-based indexed) Both the storage and the actual values in FullyDistVec should be IT The index vectors are dense and FULLY distributed on all processors We can use this function to apply a permutation like A(p,q) Sequential indexing subroutine (via multiplication) is general enough.
Definition at line 1883 of file SpParMat.cpp.
SpParMat< IT, NT, DER > combblas::SpParMat< IT, NT, DER >::SubsRefCol | ( | const std::vector< IT > & | ci | ) | const |
Column indexing with special parallel semantics.
Create a submatrix of size m x (size(ci) * s) on a r x s processor grid Essentially fetches the columns ci[0], ci[1],... ci[size(ci)] from every submatrix
Definition at line 1867 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::Transpose | ( | ) |
Definition at line 2965 of file SpParMat.cpp.
void combblas::SpParMat< IT, NT, DER >::UpdateDense | ( | DenseParMat< IT, NT > & | rhs, |
_BinaryOperation | __binary_op | ||
) | const |
Definition at line 2365 of file SpParMat.cpp.
|
friend |
Definition at line 399 of file SpParMat.h.
|
friend |
Estimate the maximum nnz needed to store in a process from all stages of SUMMA before reduction
Definition at line 916 of file ParFriends.h.
|
friend |
Definition at line 1842 of file ParFriends.h.
|
friend |
Definition at line 1859 of file ParFriends.h.
|
friend |
|
friend |
Step 3 of the sparse SpMV algorithm, with the semiring
[in,out] | optbuf | {scratch space for all-to-all (fold) communication} |
[in,out] | indacc,numacc | {index and values of the input vector, deleted upon exit} |
[in,out] | sendindbuf,sendnumbuf | {index and values of the output vector, created} |
Definition at line 1158 of file ParFriends.h.
|
friend |
|
friend |
Broadcasts A multiple times (#phases) in order to save storage in the output Only uses 1/phases of C memory if the threshold/max limits are proper
Definition at line 349 of file ParFriends.h.
|
friend |
|
friend |
Friend declarations.
|
friend |
|
friend |
|
friend |
|
friend |
Definition at line 4255 of file SpParMat.cpp.
|
friend |
: Old version that is no longer considered optimal Kept for legacy purposes To be removed when other functionals are fully tested.
Definition at line 1675 of file ParFriends.h.
|
friend |
Parallel dense SpMV
Definition at line 1595 of file ParFriends.h.
|
friend |
Definition at line 1044 of file ParFriends.h.
|
friend |
Definition at line 1561 of file ParFriends.h.
|
friend |
Definition at line 1569 of file ParFriends.h.