#include <SpParMat.h>
Classes | |
| class | ScalarReadSaveHandler |
Public Types | |
| typedef DER::LocalIT | LocalIT |
| typedef DER::LocalNT | LocalNT |
| typedef IT | GlobalIT |
| typedef NT | GlobalNT |
| 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 | SetDifference (const SpParMat< IT, NT, DER > &rhs) |
| 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 |
| DER | InducedSubgraphs2Procs (const FullyDistVec< IT, IT > &Assignments, std::vector< IT > &LocalIdxs) 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 IRRELEVANT_NT > | |
| void | PruneColumnByIndex (const FullyDistSpVec< IT, IRRELEVANT_NT > &ci) |
| 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... | |
| template<typename SelectFirstSR , typename SelectSecondSR > | |
| SpParMat< IT, NT, DER > | SubsRef_SR (const FullyDistVec< IT, IT > &v, Dim dim, bool inplace=false) |
| SpParMat< IT, NT, DER > | operator() (const FullyDistVec< IT, IT > &ri, const FullyDistVec< IT, IT > &ci, bool inplace=false) |
| SpParMat< IT, NT, DER > | operator() (const FullyDistVec< IT, IT > &v, Dim dim, 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 | PruneFull (const FullyDistVec< IT, IT > &ri, const FullyDistVec< IT, IT > &ci) |
| prune all entries whose row indices are in ri OR 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<class HANDLER > | |
| void | ParallelWriteMM (const std::string &filename, bool onebased, HANDLER handler) |
| void | ParallelWriteMM (const std::string &filename, bool onebased) |
| void | ParallelBinaryWrite (std::string filename) const |
| 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 () const |
| DER * | seqptr () const |
| 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) |
| std::vector< std::vector< SpParMat< IT, NT, DER > > > | BlockSplit (int br, int bc) |
| SpParMat () | |
| 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) | |
| 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 | SetDifference (const SpParMat< IT, NT, DER > &rhs) |
| 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 |
| DER | InducedSubgraphs2Procs (const FullyDistVec< IT, IT > &Assignments, std::vector< IT > &LocalIdxs) 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) |
| template<typename _BinaryOperation > | |
| SpParMat< IT, NT, DER > | PruneColumn (const FullyDistSpVec< IT, NT > &pvals, _BinaryOperation __binary_op, bool inPlace=true) |
| template<typename IRRELEVANT_NT > | |
| void | PruneColumnByIndex (const FullyDistSpVec< IT, IRRELEVANT_NT > &ci) |
| 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... | |
| template<typename SelectFirstSR , typename SelectSecondSR > | |
| SpParMat< IT, NT, DER > | SubsRef_SR (const FullyDistVec< IT, IT > &v, Dim dim, bool inplace=false) |
| SpParMat< IT, NT, DER > | operator() (const FullyDistVec< IT, IT > &ri, const FullyDistVec< IT, IT > &ci, bool inplace=false) |
| SpParMat< IT, NT, DER > | operator() (const FullyDistVec< IT, IT > &v, Dim dim, 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 | PruneFull (const FullyDistVec< IT, IT > &ri, const FullyDistVec< IT, IT > &ci) |
| prune all entries whose row indices are in ri OR 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<class HANDLER > | |
| void | ParallelWriteMM (const std::string &filename, bool onebased, HANDLER handler) |
| void | ParallelWriteMM (const std::string &filename, bool onebased) |
| void | ParallelBinaryWrite (std::string filename) const |
| 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 () const |
| DER * | seqptr () const |
| 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) |
| std::vector< std::vector< SpParMat< IT, NT, DER > > > | BlockSplit (int br, int bc) |
Friends | |
| template<class IU , class NU > | |
| class | DenseParMat |
| template<typename SR , typename IU , typename NU1 , typename NU2 , typename UDER1 , typename UDER2 > | |
| IU | EstimateFLOP (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_DoubleBuff (SpParMat< IU, NU1, UDER1 > &A, SpParMat< IU, NU2, UDER2 > &B, bool clearA, bool clearB) |
| 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 SR , typename NUO , typename UDERO , typename IU , typename NU1 , typename NU2 , typename UDER1 , typename UDER2 > | |
| SpParMat< IU, NUO, UDERO > | Mult_AnXBn_Overlap (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, bool hashEstimate) |
| 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 UDER1 , typename UDER2 > | |
| SpParMat< IU, NUO, UDERO > | Mult_AnXBn_SUMMA (SpParMat< IU, NU1, UDER1 > &A, SpParMat< IU, NU2, UDER2 > &B, bool clearA, bool clearB) |
| 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, int computationKernel, int64_t perProcessMem) |
| template<typename SR , typename NUO , typename UDERO , typename IU , typename NU1 , typename NU2 , typename UDERA , typename UDERB > | |
| int | CalculateNumberOfPhases (SpParMat< IU, NU1, UDERA > &A, SpParMat< IU, NU2, UDERB > &B, 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) |
| template<typename SR , typename IU , typename NU1 , typename NU2 , typename UDER1 , typename UDER2 > | |
| IU | EstimateFLOP (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_DoubleBuff (SpParMat< IU, NU1, UDER1 > &A, SpParMat< IU, NU2, UDER2 > &B, bool clearA, bool clearB) |
| 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 SR , typename NUO , typename UDERO , typename IU , typename NU1 , typename NU2 , typename UDER1 , typename UDER2 > | |
| SpParMat< IU, NUO, UDERO > | Mult_AnXBn_Overlap (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, bool hashEstimate) |
| 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 UDER1 , typename UDER2 > | |
| SpParMat< IU, NUO, UDERO > | Mult_AnXBn_SUMMA (SpParMat< IU, NU1, UDER1 > &A, SpParMat< IU, NU2, UDER2 > &B, bool clearA, bool clearB) |
| 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, int computationKernel, int64_t perProcessMem) |
| template<typename SR , typename NUO , typename UDERO , typename IU , typename NU1 , typename NU2 , typename UDERA , typename UDERB > | |
| int | CalculateNumberOfPhases (SpParMat< IU, NU1, UDERA > &A, SpParMat< IU, NU2, UDERB > &B, 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) |
| template<class IU , class NU > | |
| class | DenseParMat |
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 68 of file SpParMat.h.
Definition at line 73 of file SpParMat.h.
Definition at line 73 of file SpParMat.h.
Definition at line 74 of file SpParMat.h.
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::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.
| 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 3140 of file SpParMat.cpp.
Definition at line 716 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 3066 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 3104 of file SpParMat.cpp.
Definition at line 110 of file SpParMat.cpp.
| combblas::SpParMat< IT, NT, DER >::SpParMat | ( | ) |
| combblas::SpParMat< IT, NT, DER >::SpParMat | ( | MPI_Comm | world | ) |
| combblas::SpParMat< IT, NT, DER >::SpParMat | ( | std::shared_ptr< CommGrid > | grid | ) |
| combblas::SpParMat< IT, NT, DER >::SpParMat | ( | DER * | myseq, |
| std::shared_ptr< CommGrid > | grid | ||
| ) |
| combblas::SpParMat< IT, NT, DER >::SpParMat | ( | std::ifstream & | input, |
| MPI_Comm & | world | ||
| ) |
| combblas::SpParMat< IT, NT, DER >::SpParMat | ( | DER * | myseq, |
| MPI_Comm & | world | ||
| ) |
| combblas::SpParMat< IT, NT, DER >::SpParMat | ( | const DistEdgeList< DELIT > & | rhs, |
| bool | removeloops = true |
||
| ) |
| combblas::SpParMat< IT, NT, DER >::SpParMat | ( | IT | total_m, |
| IT | total_n, | ||
| const FullyDistVec< IT, IT > & | , | ||
| const FullyDistVec< IT, IT > & | , | ||
| const FullyDistVec< IT, NT > & | , | ||
| bool | SumDuplicates = false |
||
| ) |
| combblas::SpParMat< IT, NT, DER >::SpParMat | ( | IT | total_m, |
| IT | total_n, | ||
| const FullyDistVec< IT, IT > & | , | ||
| const FullyDistVec< IT, IT > & | , | ||
| const NT & | , | ||
| bool | SumDuplicates = false |
||
| ) |
| void combblas::SpParMat< IT, NT, DER >::ActivateThreading | ( | int | numsplits | ) |
Definition at line 3444 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::ActivateThreading | ( | int | numsplits | ) |
| void combblas::SpParMat< IT, NT, DER >::AddLoops | ( | FullyDistVec< IT, NT > | loopvals, |
| bool | replaceExisting = false |
||
| ) |
Definition at line 3294 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::AddLoops | ( | FullyDistVec< IT, NT > | loopvals, |
| bool | replaceExisting = false |
||
| ) |
| void combblas::SpParMat< IT, NT, DER >::AddLoops | ( | NT | loopval, |
| bool | replaceExisting = false |
||
| ) |
Definition at line 3277 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::AddLoops | ( | NT | loopval, |
| bool | replaceExisting = false |
||
| ) |
|
inline |
Definition at line 148 of file SpParMat.h.
|
inline |
Definition at line 148 of file SpParMat.h.
Definition at line 1743 of file SpParMat.cpp.
| IT combblas::SpParMat< IT, NT, DER >::Bandwidth | ( | ) | const |
| std::vector< std::vector< SpParMat< IT, NT, DER > > > combblas::SpParMat< IT, NT, DER >::BlockSplit | ( | int | br, |
| int | bc | ||
| ) |
Definition at line 2974 of file SpParMat.cpp.
| std::vector< std::vector< SpParMat< IT, NT, DER > > > combblas::SpParMat< IT, NT, DER >::BlockSplit | ( | int | br, |
| int | bc | ||
| ) |
| void combblas::SpParMat< IT, NT, DER >::DimApply | ( | Dim | dim, |
| const FullyDistVec< IT, NT > & | v, | ||
| _BinaryOperation | __binary_op | ||
| ) |
Definition at line 801 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::DimApply | ( | Dim | dim, |
| const FullyDistVec< IT, NT > & | v, | ||
| _BinaryOperation | __binary_op | ||
| ) |
| 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 >::Dump | ( | std::string | filename | ) | const |
| void combblas::SpParMat< IT, NT, DER >::EWiseMult | ( | const SpParMat< IT, NT, DER > & | rhs, |
| bool | exclude | ||
| ) |
Definition at line 2781 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::EWiseMult | ( | const SpParMat< IT, NT, DER > & | rhs, |
| bool | exclude | ||
| ) |
| void combblas::SpParMat< IT, NT, DER >::EWiseScale | ( | const DenseParMat< IT, NT > & | rhs | ) |
Definition at line 2817 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::EWiseScale | ( | const DenseParMat< IT, NT > & | rhs | ) |
| 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 4838 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::Find | ( | FullyDistVec< IT, IT > & | , |
| FullyDistVec< IT, IT > & | |||
| ) | const |
| 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 4760 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::Find | ( | FullyDistVec< IT, IT > & | , |
| FullyDistVec< IT, IT > & | , | ||
| FullyDistVec< IT, NT > & | |||
| ) | const |
| void combblas::SpParMat< IT, NT, DER >::FreeMemory |
Definition at line 116 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::FreeMemory | ( | ) |
|
inline |
Definition at line 302 of file SpParMat.h.
|
inline |
Definition at line 302 of file SpParMat.h.
|
inline |
Definition at line 304 of file SpParMat.h.
|
inline |
Definition at line 304 of file SpParMat.h.
|
inline |
Definition at line 305 of file SpParMat.h.
|
inline |
Definition at line 305 of file SpParMat.h.
|
inline |
Definition at line 303 of file SpParMat.h.
|
inline |
Definition at line 303 of file SpParMat.h.
Definition at line 791 of file SpParMat.cpp.
Definition at line 773 of file SpParMat.cpp.
Definition at line 782 of file SpParMat.cpp.
| DER combblas::SpParMat< IT, NT, DER >::InducedSubgraphs2Procs | ( | const FullyDistVec< IT, IT > & | Assignments, |
| std::vector< IT > & | LocalIdxs | ||
| ) | const |
Definition at line 4908 of file SpParMat.cpp.
| DER combblas::SpParMat< IT, NT, DER >::InducedSubgraphs2Procs | ( | const FullyDistVec< IT, IT > & | Assignments, |
| std::vector< IT > & | LocalIdxs | ||
| ) | const |
| 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 1120 of file SpParMat.cpp.
| bool combblas::SpParMat< IT, NT, DER >::Kselect | ( | FullyDistSpVec< GIT, VT > & | kth, |
| IT | k_limit, | ||
| int | kselectVersion | ||
| ) | const |
| 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 1160 of file SpParMat.cpp.
| bool combblas::SpParMat< IT, NT, DER >::Kselect | ( | FullyDistVec< GIT, VT > & | rvec, |
| IT | k_limit, | ||
| int | kselectVersion | ||
| ) | const |
| bool combblas::SpParMat< IT, NT, DER >::Kselect1 | ( | FullyDistSpVec< GIT, VT > & | rvec, |
| IT | k_limit, | ||
| _UnaryOperation | __unary_op | ||
| ) | const |
Definition at line 1413 of file SpParMat.cpp.
| bool combblas::SpParMat< IT, NT, DER >::Kselect1 | ( | FullyDistSpVec< GIT, VT > & | rvec, |
| IT | k_limit, | ||
| _UnaryOperation | __unary_op | ||
| ) | const |
| bool combblas::SpParMat< IT, NT, DER >::Kselect1 | ( | FullyDistVec< GIT, VT > & | rvec, |
| IT | k_limit | ||
| ) | const |
| bool combblas::SpParMat< IT, NT, DER >::Kselect1 | ( | FullyDistVec< GIT, VT > & | rvec, |
| IT | k_limit | ||
| ) | const |
| bool combblas::SpParMat< IT, NT, DER >::Kselect1 | ( | FullyDistVec< GIT, VT > & | rvec, |
| IT | k_limit, | ||
| _UnaryOperation | __unary_op | ||
| ) | const |
Definition at line 1191 of file SpParMat.cpp.
| bool combblas::SpParMat< IT, NT, DER >::Kselect1 | ( | FullyDistVec< GIT, VT > & | rvec, |
| IT | k_limit, | ||
| _UnaryOperation | __unary_op | ||
| ) | 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.
| bool combblas::SpParMat< IT, NT, DER >::Kselect2 | ( | FullyDistVec< GIT, VT > & | rvec, |
| IT | k_limit | ||
| ) | const |
| float combblas::SpParMat< IT, NT, DER >::LoadImbalance |
Definition at line 762 of file SpParMat.cpp.
| float combblas::SpParMat< IT, NT, DER >::LoadImbalance | ( | ) | const |
| 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 1870 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 |
| 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 1849 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 |
| combblas::SpParMat< IT, NT, DER >::operator SpParMat< IT, NNT, NDER > |
Type conversion operator.
Definition at line 1992 of file SpParMat.cpp.
| combblas::SpParMat< IT, NT, DER >::operator SpParMat< IT, NNT, NDER > | ( | ) | const |
Type conversion operator.
| combblas::SpParMat< IT, NT, DER >::operator SpParMat< NIT, NNT, NDER > |
Type conversion operator (for indices as well)
Change index type as well.
Definition at line 2001 of file SpParMat.cpp.
| combblas::SpParMat< IT, NT, DER >::operator SpParMat< NIT, NNT, NDER > | ( | ) | const |
Type conversion operator (for indices as well)
|
inline |
Definition at line 228 of file SpParMat.h.
|
inline |
Definition at line 228 of file SpParMat.h.
|
inline |
Definition at line 234 of file SpParMat.h.
|
inline |
Definition at line 234 of file SpParMat.h.
| SpParMat< IT, NT, DER > & combblas::SpParMat< IT, NT, DER >::operator+= | ( | const SpParMat< IT, NT, DER > & | rhs | ) |
Definition at line 741 of file SpParMat.cpp.
| SpParMat< IT, NT, DER > & combblas::SpParMat< IT, NT, DER >::operator+= | ( | const SpParMat< IT, NT, DER > & | rhs | ) |
| 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
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 725 of file SpParMat.cpp.
| SpParMat< IT, NT, DER > & combblas::SpParMat< IT, NT, DER >::operator= | ( | const SpParMat< IT, NT, DER > & | rhs | ) |
Definition at line 2878 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 3343 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::OptimizeForGraph500 | ( | OptBuf< LIT, OT > & | optbuf | ) |
| 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 5068 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 |
| void combblas::SpParMat< IT, NT, DER >::ParallelBinaryWrite | ( | std::string | filename | ) | const |
Definition at line 620 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::ParallelBinaryWrite | ( | std::string | filename | ) | const |
| 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 3980 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::ParallelReadMM | ( | const std::string & | filename, |
| bool | onebased, | ||
| _BinaryOperation | BinOp | ||
| ) |
|
inline |
Definition at line 282 of file SpParMat.h.
|
inline |
Definition at line 282 of file SpParMat.h.
| void combblas::SpParMat< IT, NT, DER >::ParallelWriteMM | ( | const std::string & | filename, |
| bool | onebased, | ||
| HANDLER | handler | ||
| ) |
Definition at line 4120 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::ParallelWriteMM | ( | const std::string & | filename, |
| bool | onebased, | ||
| HANDLER | handler | ||
| ) |
| void combblas::SpParMat< IT, NT, DER >::PrintInfo |
Definition at line 2854 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::PrintInfo | ( | ) | const |
Definition at line 1786 of file SpParMat.cpp.
|
inline |
Definition at line 178 of file SpParMat.h.
|
inline |
Definition at line 178 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 2475 of file SpParMat.cpp.
| 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
| 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 2710 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 |
||
| ) |
| 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 2567 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 |
||
| ) |
| void combblas::SpParMat< IT, NT, DER >::PruneColumnByIndex | ( | const FullyDistSpVec< IT, IRRELEVANT_NT > & | ci | ) |
Definition at line 2649 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::PruneColumnByIndex | ( | const FullyDistSpVec< IT, IRRELEVANT_NT > & | ci | ) |
| void combblas::SpParMat< IT, NT, DER >::PruneFull | ( | const FullyDistVec< IT, IT > & | ri, |
| const FullyDistVec< IT, IT > & | ci | ||
| ) |
prune all entries whose row indices are in ri OR column indices are in ci
Definition at line 2522 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::PruneFull | ( | const FullyDistVec< IT, IT > & | ri, |
| const FullyDistVec< IT, IT > & | ci | ||
| ) |
prune all entries whose row indices are in ri OR column indices are in ci
|
inline |
Definition at line 162 of file SpParMat.h.
|
inline |
Definition at line 162 of file SpParMat.h.
| std::ofstream & combblas::SpParMat< IT, NT, DER >::put | ( | std::ofstream & | outfile | ) | const |
Definition at line 5046 of file SpParMat.cpp.
| std::ofstream & combblas::SpParMat< IT, NT, DER >::put | ( | std::ofstream & | outfile | ) | const |
| 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 4211 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 |
||
| ) |
|
inline |
Definition at line 291 of file SpParMat.h.
|
inline |
Definition at line 291 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 3882 of file SpParMat.cpp.
| FullyDistVec< IT, std::array< char, MAXVERTNAME > > combblas::SpParMat< IT, NT, DER >::ReadGeneralizedTuples | ( | const std::string & | , |
| _BinaryOperation | |||
| ) |
| FullyDistVec< IT, NT > combblas::SpParMat< IT, NT, DER >::Reduce | ( | Dim | dim, |
| _BinaryOperation | __binary_op, | ||
| NT | id | ||
| ) | const |
Definition at line 916 of file SpParMat.cpp.
| FullyDistVec< IT, NT > combblas::SpParMat< IT, NT, DER >::Reduce | ( | Dim | dim, |
| _BinaryOperation | __binary_op, | ||
| NT | id | ||
| ) | const |
| FullyDistVec< IT, NT > combblas::SpParMat< IT, NT, DER >::Reduce | ( | Dim | dim, |
| _BinaryOperation | __binary_op, | ||
| NT | id, | ||
| _UnaryOperation | __unary_op | ||
| ) | const |
Definition at line 888 of file SpParMat.cpp.
| FullyDistVec< IT, NT > combblas::SpParMat< IT, NT, DER >::Reduce | ( | Dim | dim, |
| _BinaryOperation | __binary_op, | ||
| NT | id, | ||
| _UnaryOperation | __unary_op | ||
| ) | const |
| void combblas::SpParMat< IT, NT, DER >::Reduce | ( | FullyDistVec< GIT, VT > & | rvec, |
| Dim | dim, | ||
| _BinaryOperation | __binary_op, | ||
| VT | id | ||
| ) | const |
Definition at line 945 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::Reduce | ( | FullyDistVec< GIT, VT > & | rvec, |
| Dim | dim, | ||
| _BinaryOperation | __binary_op, | ||
| VT | id | ||
| ) | const |
| 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 953 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 3257 of file SpParMat.cpp.
|
inline |
Definition at line 298 of file SpParMat.h.
|
inline |
Definition at line 298 of file SpParMat.h.
| void combblas::SpParMat< IT, NT, DER >::SaveGathered | ( | std::string | filename, |
| HANDLER | handler, | ||
| bool | transpose = false |
||
| ) | const |
Definition at line 3590 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::SaveGathered | ( | std::string | filename, |
| HANDLER | handler, | ||
| bool | transpose = false |
||
| ) | const |
|
inline |
Definition at line 306 of file SpParMat.h.
|
inline |
Definition at line 306 of file SpParMat.h.
|
inline |
Definition at line 307 of file SpParMat.h.
|
inline |
Definition at line 307 of file SpParMat.h.
Definition at line 2802 of file SpParMat.cpp.
| 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 2893 of file SpParMat.cpp.
| 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 | ||
| ) |
| 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 2427 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 | ||
| ) |
| 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 3456 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::Square | ( | ) |
| 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 2028 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.
| SpParMat< IT, NT, DER > combblas::SpParMat< IT, NT, DER >::SubsRef_SR | ( | const FullyDistVec< IT, IT > & | v, |
| Dim | dim, | ||
| bool | inplace = false |
||
| ) |
Definition at line 2257 of file SpParMat.cpp.
| SpParMat< IT, NT, DER > combblas::SpParMat< IT, NT, DER >::SubsRef_SR | ( | const FullyDistVec< IT, IT > & | v, |
| Dim | dim, | ||
| bool | inplace = false |
||
| ) |
| 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 2012 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.
| void combblas::SpParMat< IT, NT, DER >::Transpose | ( | void | ) |
Definition at line 3528 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::Transpose | ( | ) |
| void combblas::SpParMat< IT, NT, DER >::UpdateDense | ( | DenseParMat< IT, NT > & | rhs, |
| _BinaryOperation | __binary_op | ||
| ) | const |
Definition at line 2832 of file SpParMat.cpp.
| void combblas::SpParMat< IT, NT, DER >::UpdateDense | ( | DenseParMat< IT, NT > & | rhs, |
| _BinaryOperation | __binary_op | ||
| ) | const |
|
friend |
Definition at line 733 of file ParFriends.h.
|
friend |
Definition at line 733 of file ParFriends.h.
|
friend |
Definition at line 448 of file SpParMat.h.
Definition at line 448 of file SpParMat.h.
|
friend |
Friend declarations.
|
friend |
Friend declarations.
|
friend |
Estimate the maximum nnz needed to store in a process from all stages of SUMMA before reduction
Definition at line 1243 of file ParFriends.h.
|
friend |
Estimate the maximum nnz needed to store in a process from all stages of SUMMA before reduction
Definition at line 1243 of file ParFriends.h.
|
friend |
Definition at line 2211 of file ParFriends.h.
|
friend |
Definition at line 2211 of file ParFriends.h.
|
friend |
Definition at line 2194 of file ParFriends.h.
|
friend |
Definition at line 2194 of file ParFriends.h.
|
friend |
|
friend |
|
friend |
|
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 1489 of file ParFriends.h.
|
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 1489 of file ParFriends.h.
|
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 Parameters:
Definition at line 450 of file ParFriends.h.
|
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 Parameters:
Definition at line 450 of file ParFriends.h.
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
Definition at line 5053 of file SpParMat.cpp.
|
friend |
Definition at line 5053 of file SpParMat.cpp.
|
friend |
Definition at line 1374 of file ParFriends.h.
|
friend |
Definition at line 1374 of file ParFriends.h.
|
friend |
Definition at line 1892 of file ParFriends.h.
|
friend |
Definition at line 1892 of file ParFriends.h.
|
friend |
Definition at line 1900 of file ParFriends.h.
|
friend |
Definition at line 1900 of file ParFriends.h.
|
friend |
\TODO: Old version that is no longer considered optimal Kept for legacy purposes To be removed when other functionals are fully tested.
Definition at line 2005 of file ParFriends.h.
|
friend |
\TODO: Old version that is no longer considered optimal Kept for legacy purposes To be removed when other functionals are fully tested.
Definition at line 2005 of file ParFriends.h.
|
friend |
Parallel dense SpMV
Definition at line 1925 of file ParFriends.h.
|
friend |
Parallel dense SpMV
Definition at line 1925 of file ParFriends.h.