1#ifndef BP_MAXIMUM_MATCHING_H
2#define BP_MAXIMUM_MATCHING_H
25template <
class IT,
class DER>
48 for(
typename std::vector<IT>::size_type i=0; i< (
unsigned)
locvec; ++i)
84 std::vector<IT>().swap(rowid[i]);
91 std::vector<IT>().swap(colid[i]);
96 std::tuple<IT,IT,bool> *
p_tuples =
new std::tuple<IT,IT,bool>[
p_nnz];
106 int my_proccol =
ri.
commGrid->GetRankInProcRow();
128template <
typename IT>
138 while(
col.getnnz()!=0)
143 [](
IT root,
IT parent){
return parent;},
144 [](
IT root,
IT parent){
return true;},
167template <
typename IT>
189 for(
IT i=0; i<
leaves.LocArrSize(); i++)
229template <
typename IT,
typename NT,
typename DER>
257 std::vector<std::vector<double> >
timing;
430 std::cout <<
"****** maximum matching runtime ********\n";
431 std::cout << std::endl;
432 std::cout <<
"========================================================================\n";
433 std::cout <<
" BFS Search \n";
434 std::cout <<
"===================== ==================================================\n";
435 std::cout <<
"Phase Layer Match SpMV EWOpp CmUqL Prun CmMC BFS Aug Total\n";
436 std::cout <<
"===================== ===================================================\n";
440 for(
int i=0; i<
timing.size(); i++)
453 std::cout <<
"-----------------------------------------------------------------------\n";
454 std::cout <<
"Phase Layer UnMat SpMV EWOpp CmUqL Prun CmMC BFS Aug Total \n";
455 std::cout <<
"-----------------------------------------------------------------------\n";
470 std::cout <<
"***Final Maximum Matching***\n";
471 std::cout <<
"***Total-Rows Matched-Rows Total Time***\n";
474 std::cout <<
"-------------------------------------------------------\n\n";
std::shared_ptr< CommGrid > commGrid
void AugmentPath(FullyDistVec< IT, IT > &mateRow2Col, FullyDistVec< IT, IT > &mateCol2Row, FullyDistVec< IT, IT > &parentsRow, FullyDistVec< IT, IT > &leaves)
void maximumMatching(SpParMat< IT, NT, DER > &A, FullyDistVec< IT, IT > &mateRow2Col, FullyDistVec< IT, IT > &mateCol2Row, bool prune=true, bool randMM=false, bool maximizeWeight=false)
void AugmentLevel(FullyDistVec< IT, IT > &mateRow2Col, FullyDistVec< IT, IT > &mateCol2Row, FullyDistVec< IT, IT > &parentsRow, FullyDistVec< IT, IT > &leaves)
SpParMat< IT, bool, DER > PermMat(const FullyDistVec< IT, IT > &ri, const IT ncol)