Typedefs | |
| typedef struct combblas::packed_edge | packed_edge |
| typedef std::array< float, NROUNDS > | samparr_t |
Enumerations | |
| enum | Dim { Column , Row , Column , Row , Column , Row } |
| enum | Dim { Column , Row , Column , Row , Column , Row } |
| enum | Dim { Column , Row , Column , Row , Column , Row } |
Variables | |
| MPIOpCache | mpioc |
| MPIDataTypeCache | mpidtc |
Connected components based on Awerbuch-Shiloach algorithm
Connected components based on Shiloach-Vishkin algorithm
Operations used in parallel reductions and scans
Functions that are used by multiple parallel matrix classes, but don't need the "this" pointer
From Graph 500 reference implementation v2.1.1
| typedef std::array< float, NROUNDS > combblas::samparr_t |
Definition at line 2714 of file ParFriends.h.
| void combblas::AllGatherVector | ( | MPI_Comm & | ColWorld, |
| int | trxlocnz, | ||
| IU | lenuntil, | ||
| int32_t *& | trxinds, | ||
| NV *& | trxnums, | ||
| int32_t *& | indacc, | ||
| NV *& | numacc, | ||
| int & | accnz, | ||
| bool | indexisvalue | ||
| ) |
Step 2 of the sparse SpMV algorithm
| [in,out] | trxinds,trxnums | { deallocated } |
| [in,out] | indacc,numacc | { allocated } |
| [in,out] | accnz | { set } |
| [in] | trxlocnz,lenuntil,indexisvalue |
Definition at line 1430 of file ParFriends.h.
| FullyDistSpVec< IT, NT > combblas::Assign | ( | FullyDistSpVec< IT, IT > & | ind, |
| FullyDistSpVec< IT, NT > & | val | ||
| ) |
| FullyDistSpVec< IT, NT > combblas::Assign | ( | FullyDistSpVec< IT, IT > & | ind, |
| NT | val | ||
| ) |
| FullyDistSpVec< IT, NT > combblas::Assign | ( | FullyDistVec< IT, IT > & | ind, |
| FullyDistVec< IT, NT > & | val | ||
| ) |
| void combblas::AugmentLevel | ( | FullyDistVec< IT, IT > & | mateRow2Col, |
| FullyDistVec< IT, IT > & | mateCol2Row, | ||
| FullyDistVec< IT, IT > & | parentsRow, | ||
| FullyDistVec< IT, IT > & | leaves | ||
| ) |
Definition at line 129 of file BPMaximumMatching.h.
| void combblas::AugmentPath | ( | FullyDistVec< IT, IT > & | mateRow2Col, |
| FullyDistVec< IT, IT > & | mateCol2Row, | ||
| FullyDistVec< IT, IT > & | parentsRow, | ||
| FullyDistVec< IT, IT > & | leaves | ||
| ) |
Definition at line 168 of file BPMaximumMatching.h.
| void combblas::AWPM | ( | SpParMat< IT, NT, SpDCCols< IT, NT > > & | A1, |
| FullyDistVec< IT, IT > & | mateRow2Col, | ||
| FullyDistVec< IT, IT > & | mateCol2Row, | ||
| bool | optimizeProd = true, |
||
| bool | weightedCard = true |
||
| ) |
Definition at line 1144 of file ApproxWeightPerfectMatching.h.
| void combblas::BottomUpStep | ( | SpParMat< IT, bool, UDER > & | A, |
| FullyDistSpVec< IT, VT > & | x, | ||
| BitMapFringe< int64_t, int64_t > & | bm_fringe, | ||
| FullyDistVec< IT, VT > & | parents, | ||
| BitMapCarousel< IT, VT > & | done, | ||
| SpDCCols< int, bool >::SpColIter * | starts | ||
| ) |
Definition at line 458 of file BFSFriends.h.
| SpDCCols< int, bool >::SpColIter * combblas::CalcSubStarts | ( | SpParMat< IT, bool, UDER > & | A, |
| FullyDistSpVec< IT, VT > & | x, | ||
| BitMapCarousel< IT, VT > & | done | ||
| ) |
Definition at line 397 of file BFSFriends.h.
| int combblas::CalculateNumberOfPhases | ( | SpParMat< IU, NU1, UDERA > & | A, |
| SpParMat< IU, NU2, UDERB > & | B, | ||
| NUO | hardThreshold, | ||
| IU | selectNum, | ||
| IU | recoverNum, | ||
| NUO | recoverPct, | ||
| int | kselectVersion, | ||
| int64_t | perProcessMemory | ||
| ) |
Definition at line 733 of file ParFriends.h.
| bool combblas::CheckMatching | ( | FullyDistVec< IT, IT > & | mateRow2Col, |
| FullyDistVec< IT, IT > & | mateCol2Row | ||
| ) |
Definition at line 161 of file ParFriends.h.
Definition at line 1351 of file ParFriends.h.
| FullyDistVec< IT, NT > combblas::Concatenate | ( | std::vector< FullyDistVec< IT, NT > > & | vecs | ) |
Concatenate all the FullyDistVec<IT,NT> objects into a single one
Definition at line 61 of file ParFriends.h.
| FullyDistSpVec< IT, IT > combblas::ConditionalHook | ( | const SpParMat< IT, NT, DER > & | A, |
| FullyDistVec< IT, IT > & | parent, | ||
| FullyDistVec< IT, short > | stars, | ||
| int | iteration | ||
| ) |
| void combblas::dcsc_gespmv_threaded_setbuffers | ( | const SpDCCols< IT, bool > & | A, |
| const int32_t * | indx, | ||
| const VT * | numx, | ||
| int32_t | nnzx, | ||
| int32_t * | sendindbuf, | ||
| VT * | sendnumbuf, | ||
| int * | cnts, | ||
| int * | dspls, | ||
| int | p_c | ||
| ) |
Multithreaded SpMV with sparse vector and preset buffers the assembly of outgoing buffers sendindbuf/sendnumbuf are done here
Definition at line 59 of file BFSFriends.h.
Definition at line 1322 of file mtSpGEMM.h.
| IT * combblas::estimateFLOP | ( | const SpDCCols< IT, NT1 > & | A, |
| const SpDCCols< IT, NT2 > & | B, | ||
| IT * | aux = nullptr |
||
| ) |
Definition at line 1058 of file mtSpGEMM.h.
| IU combblas::EstimateFLOP | ( | SpParMat< IU, NU1, UDERA > & | A, |
| SpParMat< IU, NU2, UDERB > & | B, | ||
| bool | clearA = false, |
||
| bool | clearB = false |
||
| ) |
Definition at line 356 of file ParFriends.h.
| IT combblas::EstimateLocalFLOP | ( | const SpDCCols< IT, NT1 > & | A, |
| const SpDCCols< IT, NT2 > & | B, | ||
| bool | clearA, | ||
| bool | clearB | ||
| ) |
Definition at line 663 of file mtSpGEMM.h.
| IT * combblas::estimateNNZ | ( | const SpDCCols< IT, NT1 > & | A, |
| const SpDCCols< IT, NT2 > & | B, | ||
| IT * | aux = nullptr, |
||
| bool | freeaux = true |
||
| ) |
Definition at line 693 of file mtSpGEMM.h.
| IT * combblas::estimateNNZ_Hash | ( | const SpCCols< IT, NT1 > & | A, |
| const SpCCols< IT, NT2 > & | B, | ||
| const IT * | flopC | ||
| ) |
Definition at line 1367 of file mtSpGEMM.h.
| IT * combblas::estimateNNZ_Hash | ( | const SpDCCols< IT, NT1 > & | A, |
| const SpDCCols< IT, NT2 > & | B, | ||
| IT * | flopC, | ||
| IT * | aux = nullptr |
||
| ) |
Definition at line 807 of file mtSpGEMM.h.
| int64_t combblas::estimateNNZ_sampling | ( | const SpDCCols< IT, NT1 > & | A, |
| const SpDCCols< IT, NT2 > & | B, | ||
| int | nrounds = 5 |
||
| ) |
Definition at line 938 of file mtSpGEMM.h.
| int64_t combblas::EstPerProcessNnzSpMV | ( | SpParMat< IU, NU1, UDERA > & | A, |
| SpParMat< IU, NU2, UDERB > & | B | ||
| ) |
Definition at line 2810 of file ParFriends.h.
| int64_t combblas::EstPerProcessNnzSUMMA | ( | SpParMat< IU, NU1, UDERA > & | A, |
| SpParMat< IU, NU2, UDERB > & | B, | ||
| bool | hashEstimate | ||
| ) |
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.
| Dcsc< IU, RETT > combblas::EWiseApply | ( | const Dcsc< IU, NU1 > * | Ap, |
| const Dcsc< IU, NU2 > * | Bp, | ||
| _BinaryOperation | __binary_op, | ||
| _BinaryPredicate | do_op, | ||
| bool | allowANulls, | ||
| bool | allowBNulls, | ||
| const NU1 & | ANullVal, | ||
| const NU2 & | BNullVal, | ||
| const bool | allowIntersect | ||
| ) |
Implementation based on operator += Element wise apply with the following constraints The operation to be performed is __binary_op The operation c = __binary_op(a, b) is only performed if do_op(a, b) returns true If allowANulls is true, then if A is missing an element that B has, then ANullVal is used In that case the operation becomes c[i,j] = __binary_op(ANullVal, b[i,j]) If both allowANulls and allowBNulls is false then the function degenerates into intersection
| FullyDistSpVec< IU, RET > combblas::EWiseApply | ( | const FullyDistSpVec< IU, NU1 > & | V, |
| const FullyDistSpVec< IU, NU2 > & | W, | ||
| _BinaryOperation | _binary_op, | ||
| _BinaryPredicate | _doOp, | ||
| bool | allowVNulls, | ||
| bool | allowWNulls, | ||
| NU1 | Vzero, | ||
| NU2 | Wzero, | ||
| const bool | allowIntersect, | ||
| const bool | useExtendedBinOp | ||
| ) |
Performs an arbitrary binary operation _binary_op on the corresponding elements of two vectors with the result stored in a return vector ret. The binary operatiation is only performed if the binary predicate _doOp returns true for those elements. Otherwise the binary operation is not performed and ret does not contain an element at that position. More formally the operation is defined as: if (_doOp(V[i], W[i])) ret[i] = _binary_op(V[i], W[i]) else // ret[i] is not set Hence _doOp can be used to implement a filter on either of the vectors.
The above is only defined if both V[i] and W[i] exist (i.e. an intersection). To allow a union operation (ex. when V[i] doesn't exist but W[i] does) the allowVNulls flag is set to true and the Vzero argument is used as the missing V[i] value. !allowVNulls && !allowWNulls => intersection !allowVNulls && allowWNulls => operate on all elements of V allowVNulls && !allowWNulls => operate on all elements of W allowVNulls && allowWNulls => union
The type of each element of ret must not necessarily be related to the types of V or W, so the return type must be explicitly specified as a template parameter: FullyDistSpVec<int, double> r = EWiseApply<double>(V, W, plus, ...) For intersection, Vzero and Wzero are irrelevant ABAB:
Performs an arbitrary binary operation _binary_op on the corresponding elements of two vectors with the result stored in a return vector ret. The binary operatiation is only performed if the binary predicate _doOp returns true for those elements. Otherwise the binary operation is not performed and ret does not contain an element at that position. More formally the operation is defined as: if (_doOp(V[i], W[i])) ret[i] = _binary_op(V[i], W[i]) else // ret[i] is not set Hence _doOp can be used to implement a filter on either of the vectors.
The above is only defined if both V[i] and W[i] exist (i.e. an intersection). To allow a union operation (ex. when V[i] doesn't exist but W[i] does) the allowVNulls flag is set to true and the Vzero argument is used as the missing V[i] value. !allowVNulls && !allowWNulls => intersection !allowVNulls && allowWNulls => operate on all elements of V allowVNulls && !allowWNulls => operate on all elements of W allowVNulls && allowWNulls => union
The type of each element of ret must not necessarily be related to the types of V or W, so the return type must be explicitly specified as a template parameter: FullyDistSpVec<int, double> r = EWiseApply<double>(V, W, plus, ...) For intersection, Vzero and Wzero are irrelevant ABAB:
Performs an arbitrary binary operation _binary_op on the corresponding elements of two vectors with the result stored in a return vector ret. The binary operatiation is only performed if the binary predicate _doOp returns true for those elements. Otherwise the binary operation is not performed and ret does not contain an element at that position. More formally the operation is defined as: if (_doOp(V[i], W[i])) ret[i] = _binary_op(V[i], W[i]) else // ret[i] is not set Hence _doOp can be used to implement a filter on either of the vectors.
The above is only defined if both V[i] and W[i] exist (i.e. an intersection). To allow a union operation (ex. when V[i] doesn't exist but W[i] does) the allowVNulls flag is set to true and the Vzero argument is used as the missing V[i] value. !allowVNulls && !allowWNulls => intersection !allowVNulls && allowWNulls => operate on all elements of V allowVNulls && !allowWNulls => operate on all elements of W allowVNulls && allowWNulls => union
The type of each element of ret must not necessarily be related to the types of V or W, so the return type must be explicitly specified as a template parameter: FullyDistSpVec<int, double> r = EWiseApply<double>(V, W, plus, ...) For intersection, Vzero and Wzero are irrelevant ABAB:
Definition at line 2580 of file ParFriends.h.
| FullyDistSpVec< IU, RET > combblas::EWiseApply | ( | const FullyDistSpVec< IU, NU1 > & | V, |
| const FullyDistSpVec< IU, NU2 > & | W, | ||
| _BinaryOperation | _binary_op, | ||
| _BinaryPredicate | _doOp, | ||
| bool | allowVNulls, | ||
| bool | allowWNulls, | ||
| NU1 | Vzero, | ||
| NU2 | Wzero, | ||
| const bool | allowIntersect = true |
||
| ) |
Definition at line 2692 of file ParFriends.h.
| FullyDistSpVec< IU, RET > combblas::EWiseApply | ( | const FullyDistSpVec< IU, NU1 > & | V, |
| const FullyDistVec< IU, NU2 > & | W, | ||
| _BinaryOperation | _binary_op, | ||
| _BinaryPredicate | _doOp, | ||
| bool | allowVNulls, | ||
| NU1 | Vzero | ||
| ) |
Definition at line 2678 of file ParFriends.h.
| FullyDistSpVec< IU, RET > combblas::EWiseApply | ( | const FullyDistSpVec< IU, NU1 > & | V, |
| const FullyDistVec< IU, NU2 > & | W, | ||
| _BinaryOperation | _binary_op, | ||
| _BinaryPredicate | _doOp, | ||
| bool | allowVNulls, | ||
| NU1 | Vzero, | ||
| const bool | useExtendedBinOp | ||
| ) |
Performs an arbitrary binary operation _binary_op on the corresponding elements of two vectors with the result stored in a return vector ret. The binary operatiation is only performed if the binary predicate _doOp returns true for those elements. Otherwise the binary operation is not performed and ret does not contain an element at that position. More formally the operation is defined as: if (_doOp(V[i], W[i])) ret[i] = _binary_op(V[i], W[i]) else // ret[i] is not set Hence _doOp can be used to implement a filter on either of the vectors.
The above is only defined if both V[i] and W[i] exist (i.e. an intersection). To allow a union operation (ex. when V[i] doesn't exist but W[i] does) the allowVNulls flag is set to true and the Vzero argument is used as the missing V[i] value.
The type of each element of ret must not necessarily be related to the types of V or W, so the return type must be explicitly specified as a template parameter: FullyDistSpVec<int, double> r = EWiseApply<double>(V, W, plus, retTrue, false, 0)
Definition at line 2479 of file ParFriends.h.
| SpDCCols< IU, RETT > combblas::EWiseApply | ( | const SpDCCols< IU, NU1 > & | A, |
| const SpDCCols< IU, NU2 > & | B, | ||
| _BinaryOperation | __binary_op, | ||
| _BinaryPredicate | do_op, | ||
| bool | allowANulls, | ||
| bool | allowBNulls, | ||
| const NU1 & | ANullVal, | ||
| const NU2 & | BNullVal, | ||
| const bool | allowIntersect | ||
| ) |
| SpParMat< IU, RETT, RETDER > combblas::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 | ||
| ) |
Definition at line 2211 of file ParFriends.h.
| SpParMat< IU, RETT, RETDER > combblas::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 = true |
||
| ) |
Definition at line 2230 of file ParFriends.h.
| SpParMat< IU, RETT, RETDER > combblas::EWiseApply | ( | const SpParMat< IU, NU1, UDERA > & | A, |
| const SpParMat< IU, NU2, UDERB > & | B, | ||
| _BinaryOperation | __binary_op, | ||
| bool | notB, | ||
| const NU2 & | defaultBVal | ||
| ) |
Definition at line 2194 of file ParFriends.h.
| FullyDistSpVec< IU, RET > combblas::EWiseApply_threaded | ( | const FullyDistSpVec< IU, NU1 > & | V, |
| const FullyDistVec< IU, NU2 > & | W, | ||
| _BinaryOperation | _binary_op, | ||
| _BinaryPredicate | _doOp, | ||
| bool | allowVNulls, | ||
| NU1 | Vzero, | ||
| const bool | useExtendedBinOp | ||
| ) |
Threaded EWiseApply. Only called internally from EWiseApply.
Definition at line 2333 of file ParFriends.h.
| FullyDistSpVec< IU, typename promote_trait< NU1, NU2 >::T_promote > combblas::EWiseMult | ( | const FullyDistSpVec< IU, NU1 > & | V, |
| const FullyDistVec< IU, NU2 > & | W, | ||
| bool | exclude, | ||
| NU2 | zero | ||
| ) |
if exclude is true, then we prune all entries W[i] != zero from V if exclude is false, then we perform a proper elementwise multiplication
Definition at line 2244 of file ParFriends.h.
| SpParMat< IU, typename promote_trait< NU1, NU2 >::T_promote, typename promote_trait< UDERA, UDERB >::T_promote > combblas::EWiseMult | ( | const SpParMat< IU, NU1, UDERA > & | A, |
| const SpParMat< IU, NU2, UDERB > & | B, | ||
| bool | exclude | ||
| ) |
Definition at line 2174 of file ParFriends.h.
| std::vector< std::tuple< IT, IT, NT > > combblas::ExchangeData | ( | std::vector< std::vector< std::tuple< IT, IT, NT > > > & | tempTuples, |
| MPI_Comm | World | ||
| ) |
Definition at line 44 of file ApproxWeightPerfectMatching.h.
| std::tuple< IT, IT, NT > * combblas::ExchangeData | ( | std::vector< std::vector< std::tuple< IT, IT, NT > > > & | tempTuples, |
| MPI_Comm | World, | ||
| IT & | datasize | ||
| ) |
Definition at line 51 of file SpParMat3D.cpp.
| std::vector< std::tuple< IT, IT, IT, NT > > combblas::ExchangeData1 | ( | std::vector< std::vector< std::tuple< IT, IT, IT, NT > > > & | tempTuples, |
| MPI_Comm | World | ||
| ) |
Definition at line 92 of file ApproxWeightPerfectMatching.h.
| FullyDistVec< IT, NT > combblas::Extract | ( | const FullyDistVec< IT, NT > & | dense, |
| const FullyDistVec< IT, IT > & | ri | ||
| ) |
| FullyDistSpVec< IT, NT > combblas::Extract | ( | const FullyDistVec< IT, NT > | dense, |
| FullyDistSpVec< IT, IT > | ri | ||
| ) |
Definition at line 85 of file MultiwayMerge.h.
Definition at line 108 of file MultiwayMerge.h.
| void combblas::Generator | ( | unsigned | scale, |
| unsigned | EDGEFACTOR, | ||
| double | initiator[4], | ||
| CCGrid & | CMG, | ||
| SpDCCols< IT, NT > & | splitmat, | ||
| bool | trans, | ||
| bool | scramble | ||
| ) |
| [out] | splitmat | {generated RMAT matrix, split into CMG.GridLayers pieces} |
Definition at line 68 of file GenRmatDist.h.
| void combblas::generic_gespmv | ( | const SpMat< MIND, NUM, DER > & | A, |
| const VIND * | indx, | ||
| const IVT * | numx, | ||
| VIND | nnzx, | ||
| std::vector< VIND > & | indy, | ||
| std::vector< OVT > & | numy, | ||
| PreAllocatedSPA< OVT > & | SPA | ||
| ) |
| SpDCCols< IT, NT > * combblas::GenMat | ( | CCGrid & | CMG, |
| unsigned | scale, | ||
| unsigned | EDGEFACTOR, | ||
| double | initiator[4], | ||
| bool | permute | ||
| ) |
Definition at line 83 of file SplitMatDist.h.
| SpDCCols< IT, NT > * combblas::GenRMat | ( | unsigned | scale, |
| unsigned | EDGEFACTOR, | ||
| double | initiator[4], | ||
| MPI_Comm & | layerworld, | ||
| bool | scramble | ||
| ) |
Definition at line 29 of file GenRmatDist.h.
Definition at line 41 of file Semirings.h.
| bool combblas::isMatching | ( | FullyDistVec< IT, NT > & | mateCol2Row, |
| FullyDistVec< IT, NT > & | mateRow2Col | ||
| ) |
| bool combblas::isMaximalmatching | ( | Par_DCSC_Bool & | A, |
| FullyDistVec< IT, NT > & | mateRow2Col, | ||
| FullyDistVec< IT, NT > & | mateCol2Row | ||
| ) |
Definition at line 403 of file BPMaximalMatching.h.
| IT combblas::LabelCC | ( | FullyDistVec< IT, IT > & | parent, |
| FullyDistVec< IT, IT > & | cclabel | ||
| ) |
| SpTuples< IT, NTO > * combblas::LocalHybridSpGEMM | ( | const SpCCols< IT, NT1 > & | A, |
| const SpCCols< IT, NT2 > & | B, | ||
| bool | clearA, | ||
| bool | clearB | ||
| ) |
Definition at line 1148 of file mtSpGEMM.h.
| SpTuples< IT, NTO > * combblas::LocalHybridSpGEMM | ( | const SpDCCols< IT, NT1 > & | A, |
| const SpDCCols< IT, NT2 > & | B, | ||
| bool | clearA, | ||
| bool | clearB, | ||
| IT * | aux = nullptr |
||
| ) |
Definition at line 214 of file mtSpGEMM.h.
| SpTuples< IT, NTO > * combblas::LocalSpGEMM | ( | const SpDCCols< IT, NT1 > & | A, |
| const SpDCCols< IT, NT2 > & | B, | ||
| bool | clearA, | ||
| bool | clearB | ||
| ) |
Definition at line 75 of file mtSpGEMM.h.
| SpTuples< IT, NTO > * combblas::LocalSpGEMMHash | ( | const SpDCCols< IT, NT1 > & | A, |
| const SpDCCols< IT, NT2 > & | B, | ||
| bool | clearA, | ||
| bool | clearB, | ||
| bool | sort = true |
||
| ) |
Definition at line 464 of file mtSpGEMM.h.
| void combblas::LocalSpMV | ( | const SpParMat< IT, bool, UDER > & | A, |
| int | rowneighs, | ||
| OptBuf< int32_t, VT > & | optbuf, | ||
| int32_t *& | indacc, | ||
| VT *& | numacc, | ||
| int * | sendcnt, | ||
| int | accnz | ||
| ) |
Step 3 of the sparse SpMV algorithm, without the semiring (BFS only)
| [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 184 of file BFSFriends.h.
| void combblas::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 | ||
| ) |
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.
Definition at line 331 of file ApproxWeightPerfectMatching.h.
| std::vector< std::tuple< IT, IT > > combblas::MateBcast | ( | std::vector< std::tuple< IT, IT > > | sendTuples, |
| MPI_Comm | World | ||
| ) |
Definition at line 185 of file ApproxWeightPerfectMatching.h.
| void combblas::MaximalMatching | ( | Par_DCSC_Bool & | A, |
| Par_DCSC_Bool & | AT, | ||
| FullyDistVec< IT, IT > & | mateRow2Col, | ||
| FullyDistVec< IT, IT > & | mateCol2Row, | ||
| FullyDistVec< IT, IT > & | degColRecv, | ||
| int | type, | ||
| bool | rand = true |
||
| ) |
Definition at line 23 of file BPMaximalMatching.h.
| void combblas::maximumMatching | ( | SpParMat< IT, NT, DER > & | A, |
| FullyDistVec< IT, IT > & | mateRow2Col, | ||
| FullyDistVec< IT, IT > & | mateCol2Row, | ||
| bool | prune = true, |
||
| bool | randMM = false, |
||
| bool | maximizeWeight = false |
||
| ) |
Definition at line 231 of file BPMaximumMatching.h.
| void combblas::MCLPruneRecoverySelect | ( | SpParMat< IT, NT, DER > & | A, |
| NT | hardThreshold, | ||
| IT | selectNum, | ||
| IT | recoverNum, | ||
| NT | recoverPct, | ||
| int | kselectVersion | ||
| ) |
Definition at line 186 of file ParFriends.h.
| SpParMat< IU, NUO, UDERO > combblas::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 | perProcessMemory | ||
| ) |
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.
| SpParMat3D< IU, NUO, UDERO > combblas::MemEfficientSpGEMM3D | ( | SpParMat3D< IU, NU1, UDERA > & | A, |
| SpParMat3D< IU, NU2, UDERB > & | B, | ||
| int | phases, | ||
| NUO | hardThreshold, | ||
| IU | selectNum, | ||
| IU | recoverNum, | ||
| NUO | recoverPct, | ||
| int | kselectVersion, | ||
| int | computationKernel, | ||
| int64_t | perProcessMemory | ||
| ) |
Definition at line 3215 of file ParFriends.h.
| void combblas::MergeContributions | ( | FullyDistSpVec< IU, VT > & | y, |
| int *& | recvcnt, | ||
| int *& | rdispls, | ||
| int32_t *& | recvindbuf, | ||
| VT *& | recvnumbuf, | ||
| int | rowneighs | ||
| ) |
Definition at line 224 of file BFSFriends.h.
| void combblas::MergeContributions | ( | int * | listSizes, |
| std::vector< int32_t * > & | indsvec, | ||
| std::vector< OVT * > & | numsvec, | ||
| std::vector< IU > & | mergedind, | ||
| std::vector< OVT > & | mergednum | ||
| ) |
Definition at line 1557 of file ParFriends.h.
| void combblas::MergeContributions_threaded | ( | int *& | listSizes, |
| std::vector< int32_t * > & | indsvec, | ||
| std::vector< OVT * > & | numsvec, | ||
| std::vector< IU > & | mergedind, | ||
| std::vector< OVT > & | mergednum, | ||
| IU | maxindex | ||
| ) |
Definition at line 1629 of file ParFriends.h.
Definition at line 118 of file RestrictionOp.h.
| MPI_Datatype combblas::MPIType | ( | void | ) |
| MPI_Datatype combblas::MPIType< bool > | ( | void | ) |
Definition at line 84 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< bool > | ( | void | ) |
Definition at line 84 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< bool > | ( | void | ) |
Definition at line 84 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< bool > | ( | void | ) |
Definition at line 84 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< double > | ( | void | ) |
Definition at line 76 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< double > | ( | void | ) |
Definition at line 76 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< double > | ( | void | ) |
Definition at line 76 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< double > | ( | void | ) |
Definition at line 76 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< float > | ( | void | ) |
Definition at line 72 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< float > | ( | void | ) |
Definition at line 72 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< float > | ( | void | ) |
Definition at line 72 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< float > | ( | void | ) |
Definition at line 72 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< int32_t > | ( | void | ) |
Definition at line 56 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< int32_t > | ( | void | ) |
Definition at line 56 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< int32_t > | ( | void | ) |
Definition at line 56 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< int32_t > | ( | void | ) |
Definition at line 56 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< int64_t > | ( | void | ) |
Definition at line 64 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< int64_t > | ( | void | ) |
Definition at line 64 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< int64_t > | ( | void | ) |
Definition at line 64 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< int64_t > | ( | void | ) |
Definition at line 64 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< long double > | ( | void | ) |
Definition at line 80 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< long double > | ( | void | ) |
Definition at line 80 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< long double > | ( | void | ) |
Definition at line 80 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< long double > | ( | void | ) |
Definition at line 80 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< signed char > | ( | void | ) |
Definition at line 40 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< signed char > | ( | void | ) |
Definition at line 40 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< signed char > | ( | void | ) |
Definition at line 40 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< signed char > | ( | void | ) |
Definition at line 40 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< signed short int > | ( | void | ) |
Definition at line 48 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< signed short int > | ( | void | ) |
Definition at line 48 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< signed short int > | ( | void | ) |
Definition at line 48 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< signed short int > | ( | void | ) |
Definition at line 48 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< uint32_t > | ( | void | ) |
Definition at line 60 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< uint32_t > | ( | void | ) |
Definition at line 60 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< uint32_t > | ( | void | ) |
Definition at line 60 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< uint32_t > | ( | void | ) |
Definition at line 60 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< uint64_t > | ( | void | ) |
Definition at line 68 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< uint64_t > | ( | void | ) |
Definition at line 68 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< uint64_t > | ( | void | ) |
Definition at line 68 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< uint64_t > | ( | void | ) |
Definition at line 68 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< unsigned char > | ( | void | ) |
Definition at line 44 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< unsigned char > | ( | void | ) |
Definition at line 44 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< unsigned char > | ( | void | ) |
Definition at line 44 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< unsigned char > | ( | void | ) |
Definition at line 44 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< unsigned short int > | ( | void | ) |
Definition at line 52 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< unsigned short int > | ( | void | ) |
Definition at line 52 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< unsigned short int > | ( | void | ) |
Definition at line 52 of file MPIType.cpp.
| MPI_Datatype combblas::MPIType< unsigned short int > | ( | void | ) |
Definition at line 52 of file MPIType.cpp.
| SpParMat< IU, typename promote_trait< NU1, NU2 >::T_promote, typename promote_trait< UDERA, UDERB >::T_promote > combblas::Mult_AnXBn_ActiveTarget | ( | const SpParMat< IU, NU1, UDERA > & | A, |
| const SpParMat< IU, NU2, UDERB > & | B | ||
| ) |
Parallel A = B*C routine that uses one-sided MPI-2 features General active target syncronization via MPI_Win_Post, MPI_Win_Start, MPI_Win_Complete, MPI_Win_Wait Tested on my dual core Macbook with 1,4,9,16,25 MPI processes No memory hog: splits the matrix into two along the column, prefetches the next half matrix while computing on the current one
Definition at line 58 of file ParFriendsExt.h.
| SpParMat< IU, NUO, UDERO > combblas::Mult_AnXBn_DoubleBuff | ( | SpParMat< IU, NU1, UDERA > & | A, |
| SpParMat< IU, NU2, UDERB > & | B, | ||
| bool | clearA = false, |
||
| bool | clearB = false |
||
| ) |
Parallel C = A*B routine that uses a double buffered broadcasting scheme
Definition at line 799 of file ParFriends.h.
| SpParMat< IU, typename promote_trait< NU1, NU2 >::T_promote, typename promote_trait< UDERA, UDERB >::T_promote > combblas::Mult_AnXBn_Fence | ( | const SpParMat< IU, NU1, UDERA > & | A, |
| const SpParMat< IU, NU2, UDERB > & | B | ||
| ) |
Parallel A = B*C routine that uses one-sided MPI-2 features Syncronization is through MPI_Win_Fence Buggy as of September, 2009
Definition at line 448 of file ParFriendsExt.h.
| SpParMat< IU, NUO, UDERO > combblas::Mult_AnXBn_Overlap | ( | SpParMat< IU, NU1, UDERA > & | A, |
| SpParMat< IU, NU2, UDERB > & | B, | ||
| bool | clearA = false, |
||
| bool | clearB = false |
||
| ) |
Definition at line 1111 of file ParFriends.h.
| SpParMat< IU, typename promote_trait< NU1, NU2 >::T_promote, typename promote_trait< UDERA, UDERB >::T_promote > combblas::Mult_AnXBn_PassiveTarget | ( | const SpParMat< IU, NU1, UDERA > & | A, |
| const SpParMat< IU, NU2, UDERB > & | B | ||
| ) |
Parallel A = B*C routine that uses one-sided MPI-2 features This function implements an asynchronous 2D algorithm, in the sense that there is no notion of stages.
The process that completes its submatrix update, requests subsequent matrices from their owners w/out waiting to sychronize with other processors
This partially remedies the severe load balancing problem in sparse matrices.
The class uses MPI-2 to achieve one-sided asynchronous communication
The algorithm treats each submatrix as a single block
Local data structure can be any SpMat that has a constructor with array sizes and getarrs() member Passive target syncronization via MPI_Win_Lock, MPI_Win_Unlock No memory hog: splits the matrix into two along the column, prefetches the next half matrix while computing on the current one
Definition at line 291 of file ParFriendsExt.h.
| SpParMat3D< IU, NUO, UDERO > combblas::Mult_AnXBn_SUMMA3D | ( | SpParMat3D< IU, NU1, UDER1 > & | A, |
| SpParMat3D< IU, NU2, UDER2 > & | B | ||
| ) |
Definition at line 2919 of file ParFriends.h.
| SpParMat< IU, NUO, UDERO > combblas::Mult_AnXBn_Synch | ( | SpParMat< IU, NU1, UDERA > & | A, |
| SpParMat< IU, NU2, UDERB > & | B, | ||
| bool | clearA = false, |
||
| bool | clearB = false |
||
| ) |
Parallel A = B*C routine that uses only MPI-1 features Relies on simple blocking broadcast
Definition at line 1005 of file ParFriends.h.
| SpDCCols< IT, NT > * combblas::multiply | ( | SpDCCols< IT, NT > & | splitA, |
| SpDCCols< IT, NT > & | splitB, | ||
| CCGrid & | CMG, | ||
| bool | isBT, | ||
| bool | threaded | ||
| ) |
Definition at line 11 of file Multiplier.h.
| SpTuples< IU, NUO > * combblas::MultiplyReturnTuples | ( | const SpMat< IU, NU1, DER1 > & | A, |
| const SpMat< IU, NU2, DER2 > & | B, | ||
| bool | isAT, | ||
| bool | isBT, | ||
| bool | clearA = false, |
||
| bool | clearB = false |
||
| ) |
| SpTuples< IT, NT > * combblas::MultiwayMerge | ( | std::vector< SpTuples< IT, NT > * > & | ArrSpTups, |
| IT | mdim = 0, |
||
| IT | ndim = 0, |
||
| bool | delarrs = false |
||
| ) |
Definition at line 412 of file MultiwayMerge.h.
| SpTuples< IT, NT > * combblas::MultiwayMergeHash | ( | std::vector< SpTuples< IT, NT > * > & | ArrSpTups, |
| IT | mdim = 0, |
||
| IT | ndim = 0, |
||
| bool | delarrs = false, |
||
| bool | sorted = true |
||
| ) |
Definition at line 537 of file MultiwayMerge.h.
| SpTuples< IT, NT > * combblas::MultiwayMergeHashSliding | ( | std::vector< SpTuples< IT, NT > * > & | ArrSpTups, |
| IT | mdim = 0, |
||
| IT | ndim = 0, |
||
| bool | delarrs = false, |
||
| bool | sorted = true, |
||
| IT | maxHashTableSize = 16384 |
||
| ) |
Definition at line 693 of file MultiwayMerge.h.
| ofstream & combblas::operator<< | ( | ofstream & | outfile, |
| const MemoryPool & | mpool | ||
| ) |
Dump the contents of the pinned memory.
Definition at line 140 of file MemoryPool.cpp.
| std::ofstream & combblas::operator<< | ( | std::ofstream & | outfile, |
| const SpParMat< IU, NU, UDER > & | s | ||
| ) |
Definition at line 5053 of file SpParMat.cpp.
| std::ifstream & combblas::operator>> | ( | std::ifstream & | infile, |
| SpMat< UIT, UNT, UDER > & | s | ||
| ) |
Definition at line 141 of file ApproxWeightPerfectMatching.h.
| SpTuples< IT, NT > * combblas::ParallelReduce_Alltoall_threaded | ( | MPI_Comm & | fibWorld, |
| SpTuples< IT, NT > *& | localmerged | ||
| ) |
Definition at line 37 of file Reductions.h.
|
inline |
Definition at line 52 of file FileHeader.h.
| void combblas::PermEdges | ( | DistEdgeList< IT > & | DEL | ) |
Randomly permutes the distributed edge list. Once we call Viral's psort on this vector, everything will go to the right place [tuples are sorted lexicographically] and you can reconstruct the int64_t * edges in an embarrassingly parallel way. As I understood, the entire purpose of this function is to destroy any locality. It does not rename any vertices and edges are not named anyway. For an example, think about the edge (0,1). It will eventually (at the end of kernel 1) be owned by processor P(0,0). However, assume that processor P(r1,c1) has a copy of it before the call to PermEdges. After this call, some other irrelevant processor P(r2,c2) will own it. So we gained nothing, it is just a scrambled egg.
Definition at line 294 of file DistEdgeList.cpp.
| void combblas::PermEdges | ( | DistEdgeList< IU > & | DEL | ) |
Create a boolean matrix A (not necessarily a permutation matrix) Input: ri: a dense vector (actual values in FullyDistVec should be IT) ncol: number of columns in the output matrix A Output: a boolean matrix A with m=size(ri) and n=ncol (input) and A[k,ri[k]]=1 This can be done by Matlab like constructor, no?
Definition at line 26 of file BPMaximumMatching.h.
| std::vector< std::tuple< IT, IT, NT > > combblas::Phase1 | ( | const AWPM_param< IT > & | param, |
| Dcsc< IT, NT > * | dcsc, | ||
| const std::vector< IT > & | colptr, | ||
| const std::vector< IT > & | RepMateR2C, | ||
| const std::vector< IT > & | RepMateC2R, | ||
| const std::vector< NT > & | RepMateWR2C, | ||
| const std::vector< NT > & | RepMateWC2R | ||
| ) |
Definition at line 413 of file ApproxWeightPerfectMatching.h.
| std::vector< std::tuple< IT, IT, IT, NT > > combblas::Phase2 | ( | const AWPM_param< IT > & | param, |
| std::vector< std::tuple< IT, IT, NT > > & | recvTuples, | ||
| Dcsc< IT, NT > * | dcsc, | ||
| const std::vector< IT > & | colptr, | ||
| const std::vector< IT > & | RepMateR2C, | ||
| const std::vector< IT > & | RepMateC2R, | ||
| const std::vector< NT > & | RepMateWR2C, | ||
| const std::vector< NT > & | RepMateWC2R | ||
| ) |
Definition at line 558 of file ApproxWeightPerfectMatching.h.
| std::vector< std::vector< std::tuple< IT, IT, IT, NT > > > combblas::Phase2_old | ( | const AWPM_param< IT > & | param, |
| std::vector< std::tuple< IT, IT, NT > > & | recvTuples, | ||
| Dcsc< IT, NT > * | dcsc, | ||
| const std::vector< IT > & | colptr, | ||
| const std::vector< IT > & | RepMateR2C, | ||
| const std::vector< IT > & | RepMateC2R, | ||
| const std::vector< NT > & | RepMateWR2C, | ||
| const std::vector< NT > & | RepMateWC2R | ||
| ) |
Definition at line 757 of file ApproxWeightPerfectMatching.h.
Definition at line 24 of file mtSpGEMM.h.
Definition at line 25 of file MultiwayMerge.h.
| shared_ptr< CommGrid > combblas::ProductGrid | ( | CommGrid * | gridA, |
| CommGrid * | gridB, | ||
| int & | innerdim, | ||
| int & | Aoffset, | ||
| int & | Boffset | ||
| ) |
Definition at line 164 of file CommGrid.cpp.
| SpParMat< IU, typename promote_trait< NU1, NU2 >::T_promote, typename promote_trait< UDER2, UDER2 >::T_promote > combblas::PSpGEMM | ( | SpParMat< IU, NU1, UDER1 > & | A, |
| SpParMat< IU, NU2, UDER2 > & | B, | ||
| bool | clearA = false, |
||
| bool | clearB = false |
||
| ) |
Definition at line 462 of file SpParMat.h.
| void combblas::PSpGEMM | ( | SpParMat< IU, NU1, UDER1 > & | A, |
| SpParMat< IU, NU2, UDER2 > & | B, | ||
| SpParMat< IU, NUO, UDERO > & | out, | ||
| bool | clearA = false, |
||
| bool | clearB = false |
||
| ) |
Definition at line 455 of file SpParMat.h.
| void combblas::Reader | ( | string | filename, |
| CCGrid & | CMG, | ||
| SpDCCols< IT, NT > & | splitmat, | ||
| bool | trans, | ||
| bool | permute, | ||
| FullyDistVec< IT, IT > & | p | ||
| ) |
| [out] | splitmat | {read matrix market file into layer 0, and split into CMG.GridLayers pieces} |
Definition at line 41 of file ReadMatDist.h.
| SpDCCols< IT, NT > * combblas::ReadMat | ( | std::string | filename, |
| CCGrid & | CMG, | ||
| bool | permute, | ||
| FullyDistVec< IT, IT > & | p | ||
| ) |
Definition at line 30 of file SplitMatDist.h.
| SpDCCols< IT, NT > * combblas::ReduceAll_threaded | ( | std::vector< SpTuples< IT, NT > * > & | unreducedC, |
| CCGrid & | CMG | ||
| ) |
Definition at line 134 of file Reductions.h.
| int combblas::ReduceAssign | ( | FullyDistVec< IT, IT > & | ind, |
| FullyDistVec< IT, NT > & | val, | ||
| std::vector< std::vector< NT > > & | reduceBuffer, | ||
| NT | MAX_FOR_REDUCE | ||
| ) |
| void combblas::RenameVertices | ( | DistEdgeList< IU > & | DEL | ) |
Rename vertices globally. You first need to do create a random permutation distributed on all processors. Then the p round robin algorithm will do the renaming: For all processors P(i,i) Broadcast local_p to all p processors For j= i*N/p to min((i+1)*N/p, N) Rename the all j's with local_p(j) inside the edgelist (and mark them "renamed" so that yeach vertex id is renamed only once)
Definition at line 364 of file DistEdgeList.cpp.
| int combblas::replicate | ( | const FullyDistVec< IT, NT > & | dense, |
| const FullyDistVec< IT, IT > & | ri, | ||
| std::vector< std::vector< NT > > & | bcastBuffer | ||
| ) |
| void combblas::ReplicateMateWeights | ( | const AWPM_param< IT > & | param, |
| Dcsc< IT, NT > * | dcsc, | ||
| const std::vector< IT > & | colptr, | ||
| std::vector< IT > & | RepMateC2R, | ||
| std::vector< NT > & | RepMateWR2C, | ||
| std::vector< NT > & | RepMateWC2R | ||
| ) |
Definition at line 226 of file ApproxWeightPerfectMatching.h.
| void combblas::RestrictionOp | ( | CCGrid & | CMG, |
| SpDCCols< IT, NT > * | localmat, | ||
| SpDCCols< IT, NT > *& | R, | ||
| SpDCCols< IT, NT > *& | RT | ||
| ) |
Definition at line 197 of file RestrictionOp.h.
| void combblas::SerialMerge | ( | const std::vector< SpTuples< IT, NT > * > & | ArrSpTups, |
| std::tuple< IT, IT, NT > * | ntuples | ||
| ) |
Definition at line 185 of file MultiwayMerge.h.
| void combblas::SerialMergeHash | ( | const std::vector< SpTuples< IT, NT > * > & | ArrSpTups, |
| std::tuple< IT, IT, NT > * | ntuples, | ||
| IT * | colnnz, | ||
| IT | maxcolnnz, | ||
| IT | startCol, | ||
| IT | endCol, | ||
| bool | sorted | ||
| ) |
Definition at line 321 of file MultiwayMerge.h.
Definition at line 131 of file MultiwayMerge.h.
| IT * combblas::SerialMergeNNZHash | ( | const std::vector< SpTuples< IT, NT > * > & | ArrSpTups, |
| IT & | totnnz, | ||
| IT & | maxnnzPerCol, | ||
| IT | startCol, | ||
| IT | endCol | ||
| ) |
Definition at line 238 of file MultiwayMerge.h.
| SpParMat< IU, NU1, UDERA > combblas::SetDifference | ( | const SpParMat< IU, NU1, UDERA > & | A, |
| const SpParMat< IU, NU2, UDERB > & | B | ||
| ) |
Definition at line 2157 of file ParFriends.h.
| void combblas::Shortcut | ( | FullyDistVec< IT, IT > & | parents, |
| FullyDistVec< IT, short > | stars | ||
| ) |
Definition at line 207 of file mtSpGEMM.h.
| void combblas::SpecialExchangeData | ( | std::vector< DER > & | sendChunks, |
| MPI_Comm | World, | ||
| IT & | datasize, | ||
| NT | dummy, | ||
| vector< DER > & | recvChunks | ||
| ) |
Definition at line 97 of file SpParMat3D.cpp.
| void combblas::SplitMat | ( | CCGrid & | CMG, |
| SpDCCols< IT, NT > * | localmat, | ||
| SpDCCols< IT, NT > & | splitmat, | ||
| bool | rowsplit = false |
||
| ) |
| [in] | rowsplit | {split along the row? true for B matrix} |
| [out] | splitmat | {split a matrix from layer 0 into CMG.GridLayers pieces} |
Definition at line 144 of file SplitMatDist.h.
| FullyDistSpVec< IT, VT > combblas::SpMV | ( | const SpParMat< IT, bool, UDER > & | A, |
| const FullyDistSpVec< IT, VT > & | x, | ||
| OptBuf< int32_t, VT > & | optbuf | ||
| ) |
This is essentially a SpMV for BFS because it lacks the semiring. It naturally justs selects columns of A (adjacencies of frontier) and merges with the minimum entry succeeding. SpParMat has to be boolean input and output vectors are of type VT but their indices are IT
Definition at line 328 of file BFSFriends.h.
| FullyDistSpVec< IU, typename promote_trait< NUM, IU >::T_promote > combblas::SpMV | ( | const SpParMat< IU, NUM, UDER > & | A, |
| const FullyDistSpVec< IU, IU > & | x, | ||
| bool | indexisvalue | ||
| ) |
Definition at line 1374 of file ParFriends.h.
| FullyDistSpVec< IU, typename promote_trait< NUM, IU >::T_promote > combblas::SpMV | ( | const SpParMat< IU, NUM, UDER > & | A, |
| const FullyDistSpVec< IU, IU > & | x, | ||
| bool | indexisvalue, | ||
| OptBuf< int32_t, typename promote_trait< NUM, IU >::T_promote > & | optbuf | ||
| ) |
Automatic type promotion is ONLY done here, all the callee functions (in Friends.h and below) are initialized with the promoted type If indexisvalues = true, then we do not need to transfer values for x (happens for BFS iterations with boolean matrices and integer rhs vectors)
Definition at line 1912 of file ParFriends.h.
| void combblas::SpMV | ( | const SpParMat< IU, NUM, UDER > & | A, |
| const FullyDistSpVec< IU, IVT > & | x, | ||
| FullyDistSpVec< IU, OVT > & | y, | ||
| bool | indexisvalue | ||
| ) |
Definition at line 1892 of file ParFriends.h.
| void combblas::SpMV | ( | const SpParMat< IU, NUM, UDER > & | A, |
| const FullyDistSpVec< IU, IVT > & | x, | ||
| FullyDistSpVec< IU, OVT > & | y, | ||
| bool | indexisvalue, | ||
| OptBuf< int32_t, OVT > & | optbuf | ||
| ) |
Definition at line 1900 of file ParFriends.h.
| void combblas::SpMV | ( | const SpParMat< IU, NUM, UDER > & | A, |
| const FullyDistSpVec< IU, IVT > & | x, | ||
| FullyDistSpVec< IU, OVT > & | y, | ||
| bool | indexisvalue, | ||
| OptBuf< int32_t, OVT > & | optbuf, | ||
| PreAllocatedSPA< OVT > & | SPA | ||
| ) |
This version is the most flexible sparse matrix X sparse vector [Used in KDT] It accepts different types for the matrix (NUM), the input vector (IVT) and the output vector (OVT) without relying on automatic type promotion Input (x) and output (y) vectors can be ALIASED because y is not written until the algorithm is done with x.
Definition at line 1725 of file ParFriends.h.
| void combblas::SpMV | ( | const SpParMat< IU, NUM, UDER > & | A, |
| const FullyDistSpVec< IU, IVT > & | x, | ||
| FullyDistSpVec< IU, OVT > & | y, | ||
| bool | indexisvalue, | ||
| PreAllocatedSPA< OVT > & | SPA | ||
| ) |
Definition at line 1885 of file ParFriends.h.
| FullyDistSpVec< IU, typename promote_trait< NUM, NUV >::T_promote > combblas::SpMV | ( | const SpParMat< IU, NUM, UDER > & | A, |
| const FullyDistSpVec< IU, NUV > & | x | ||
| ) |
\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.
| FullyDistVec< IU, typename promote_trait< NUM, NUV >::T_promote > combblas::SpMV | ( | const SpParMat< IU, NUM, UDER > & | A, |
| const FullyDistVec< IU, NUV > & | x | ||
| ) |
Parallel dense SpMV
Definition at line 1925 of file ParFriends.h.
| void combblas::SpMXSpV_Bucket | ( | const Csc< IT, NT > & | Acsc, |
| int32_t | mA, | ||
| const int32_t * | indx, | ||
| const IVT * | numx, | ||
| int32_t | veclen, | ||
| std::vector< int32_t > & | indy, | ||
| std::vector< OVT > & | numy, | ||
| PreAllocatedSPA< OVT > & | SPA | ||
| ) |
Definition at line 390 of file SpImpl.cpp.
| void combblas::SpMXSpV_Bucket | ( | const Csc< IT, NUM > & | Acsc, |
| int32_t | mA, | ||
| const int32_t * | indx, | ||
| const IVT * | numx, | ||
| int32_t | veclen, | ||
| std::vector< int32_t > & | indy, | ||
| std::vector< OVT > & | numy, | ||
| PreAllocatedSPA< OVT > & | SPA | ||
| ) |
| void combblas::SpMXSpV_HeapSort | ( | const Csc< IT, NT > & | Acsc, |
| int32_t | mA, | ||
| const int32_t * | indx, | ||
| const IVT * | numx, | ||
| int32_t | veclen, | ||
| std::vector< int32_t > & | indy, | ||
| std::vector< OVT > & | numy, | ||
| int32_t | offset | ||
| ) |
SpMXSpV with HeapSort Simply insert entries from columns corresponsing to nonzeros of the input vector into a minHeap Then extract entries from the minHeap Complexity: O(flops*log(flops)) offset is the offset of indices in the matrix in case the matrix is split This version is likely to be more memory efficient than the other one (the one that uses preallocated memory buffers) Because here we don't use a dense accumulation vector but a heap. It will probably be slower though.
Definition at line 345 of file SpImpl.cpp.
| void combblas::SpMXSpV_HeapSort | ( | const Csc< IT, NUM > & | Acsc, |
| int32_t | mA, | ||
| const int32_t * | indx, | ||
| const IVT * | numx, | ||
| int32_t | veclen, | ||
| std::vector< int32_t > & | indy, | ||
| std::vector< OVT > & | numy, | ||
| int32_t | offset | ||
| ) |
| void combblas::StarCheck | ( | FullyDistVec< IT, IT > & | parents, |
| FullyDistVec< IT, short > & | stars | ||
| ) |
| void combblas::SUMMALayer | ( | SpDCCols< IT, NT > & | SplitA, |
| SpDCCols< IT, NT > & | SplitB, | ||
| std::vector< SpTuples< IT, NT > * > & | C, | ||
| CCGrid & | CMG, | ||
| bool | isBT, | ||
| bool | threaded | ||
| ) |
Definition at line 25 of file SUMMALayer.h.
Definition at line 29 of file ReadMatDist.h.
Definition at line 392 of file ApproxWeightPerfectMatching.h.
Definition at line 273 of file ApproxWeightPerfectMatching.h.
Definition at line 1122 of file ApproxWeightPerfectMatching.h.
| void combblas::TransposeVector | ( | MPI_Comm & | World, |
| const FullyDistSpVec< IU, NV > & | x, | ||
| int32_t & | trxlocnz, | ||
| IU & | lenuntil, | ||
| int32_t *& | trxinds, | ||
| NV *& | trxnums, | ||
| bool | indexisvalue | ||
| ) |
Step 1 of the sparse SpMV algorithm
| [in,out] | trxlocnz,lenuntil,trxinds,trxnums | { set or allocated } |
| [in] | indexisvalue |
Definition at line 1388 of file ParFriends.h.
| void combblas::TwoThirdApprox | ( | SpParMat< IT, NT, DER > & | A, |
| FullyDistVec< IT, IT > & | mateRow2Col, | ||
| FullyDistVec< IT, IT > & | mateCol2Row | ||
| ) |
be very careful here
be very careful here
be very careful here
Definition at line 792 of file ApproxWeightPerfectMatching.h.
| FullyDistSpVec< IT, IT > combblas::UnconditionalHook2 | ( | const SpParMat< IT, NT, DER > & | A, |
| FullyDistVec< IT, IT > & | parents, | ||
| FullyDistVec< IT, short > | stars | ||
| ) |
| void combblas::UpdateMatching | ( | FullyDistVec< IT, IT > & | mateRow2Col, |
| FullyDistVec< IT, IT > & | mateCol2Row, | ||
| std::vector< IT > & | RepMateR2C, | ||
| std::vector< IT > & | RepMateC2R | ||
| ) |
Definition at line 356 of file ApproxWeightPerfectMatching.h.
| void combblas::UpdateParents | ( | MPI_Comm & | RowWorld, |
| std::pair< IT, IT > * | updates, | ||
| int | num_updates, | ||
| FullyDistVec< IT, VT > & | parents, | ||
| int | source, | ||
| int | dest, | ||
| BitMapFringe< int64_t, int64_t > & | bm_fringe | ||
| ) |
Definition at line 436 of file BFSFriends.h.
| void combblas::WeightedGreedy | ( | Par_MAT_Double & | A, |
| FullyDistVec< IT, IT > & | mateRow2Col, | ||
| FullyDistVec< IT, IT > & | mateCol2Row, | ||
| FullyDistVec< IT, IT > & | degCol | ||
| ) |
Definition at line 240 of file BPMaximalMatching.h.
| void combblas::WriteMCLClusters | ( | std::string | ofName, |
| FullyDistVec< IT, IT > | clustIdForVtx, | ||
| FullyDistVec< IT, std::array< char, MAXVERTNAME > > | vtxLabels | ||
| ) |
Write clusters to file: vertices belonging to a cluster are written in a single line separated by space. TODO: sort clusters by their sizes
| [in] | ofName | {output file name} |
| [in] | clustIdForVtx | {the ith entry stores the cluster id of the ith vertex} |
| [in] | vtxLabels | {labels of vertices} |
Definition at line 45 of file WriteMCLClusters.h.
| void combblas::WriteMCLClusters | ( | std::string | ofName, |
| FullyDistVec< IT, IT > | clustIdForVtx, | ||
| int | base | ||
| ) |
Write clusters to file: vertices belonging to a cluster are written in a single line separated by space. Ids of vertices are used as labels TODO: sort clusters by their sizes
| [in] | ofName | {output file name} |
| [in] | clustIdForVtx | {the ith entry stores the cluster id of the ith vertex} |
Definition at line 149 of file WriteMCLClusters.h.
| MPIDataTypeCache combblas::mpidtc |
C++ type to MPIType conversion is done through functions returning the mpi types The templated function is explicitly instantiated for every C++ type that has a correspoinding MPI type. For all others, a data type is created assuming it's some sort of struct. Each created data type is committed only once
| MPIOpCache combblas::mpioc |