30#include "CombBLAS/CombBLAS.h"
61template <
typename PARMAT>
72struct DetSymmetricize:
public std::binary_function<TwitterEdge, TwitterEdge, TwitterEdge>
80 if(((
g.latest + t.latest) & 1) == 1)
82 toret.latest = std::min(
g.latest, t.latest);
86 toret.latest = std::max(
g.latest, t.latest);
128 if(
x.isRetwitter() &&
x.LastTweetBy(sincedate))
138struct randGen :
public std::unary_function<double, double>
171 cout <<
"Usage: ./FilteredMIS <Scale>" <<
endl;
186 SpParHelper::Print(
"Using synthetic data, which we ALWAYS permute for load balance\n");
187 SpParHelper::Print(
"We only balance the original input, we don't repermute after each filter change\n");
188 SpParHelper::Print(
"BFS is run on UNDIRECTED graph, hence hitting CCs, and TEPS is bidirectional\n");
190 double initiator[4] = {.25, .25, .25, .25};
272 outs <<
"Load balance of " <<
static_cast<float>(
keep[i])/100 <<
"% filtered case: " <<
balance <<
endl;
321 while (
C.getnnz() > 0)
360 C.PrintInfo(
"Entries to be removed from the Candidates set");
372 C.PrintInfo(
"Candidates set after neighbors of MIS removed");
378 S.PrintInfo(
"The current MIS:");
383 ositr <<
"MIS has " <<
S.getnnz() <<
" vertices" <<
endl;
395 os <<
"Per iteration communication times: " <<
endl;
400 os <<
"--------------------------" <<
endl;
412 os <<
"--------------------------" <<
endl;
415 os <<
"Filter keeps " <<
static_cast<double>(
keep[
trials])/100.0 <<
" percentage of edges" <<
endl;
416 os <<
"Min time: " <<
TIMES[0] <<
" seconds" <<
endl;
423 os <<
"Mean time: " <<
mean <<
" seconds" <<
endl;
425 os <<
"--------------------------" <<
endl;
SpParMat< int64_t, bool, SpDCCols< int64_t, bool > > PSpMat_Bool
double cblas_allgathertime
double cblas_alltoalltime
void SymmetricizeRands(PSpMat_Twitter &A)
SpParMat< int64_t, TwitterEdge, SpDCCols< int64_t, TwitterEdge > > PSpMat_Twitter
void GenGraph500Data(double initiator[4], int log_numverts, int edgefactor, bool scramble=false, bool packed=false)
static void Print(const std::string &s)
void Symmetricize(PARMAT &A)
TwitterEdge operator()(const TwitterEdge &g, const TwitterEdge &t)
const TwitterEdge operator()(const TwitterEdge &x) const
const double operator()(const double &ignore)