30#include "CombBLAS/CombBLAS.h"
48 #include "papi_combblas_global.h"
63#define MAX_ITERS 20000
75template <
typename PARMAT>
109 if(
x.isRetwitter() &&
x.LastTweetBy(sincedate))
169 cout <<
"Usage: ./FilteredBFS <File, Gen> <Input Name | Scale> (Optional: Double)" <<
endl;
170 cout <<
"Example: ./FilteredBFS File twitter_small.txt Double" <<
endl;
189 if(
string(
argv[1]) ==
string(
"File"))
191 SpParHelper::Print(
"Using real data, which we NEVER permute for load balance, also leaving isolated vertices as-is, if any\n");
193 SpParHelper::Print(
"BFS is run on DIRECTED graph, hence hitting SCCs, and TEPS is unidirectional\n");
203 if(
argc == 4 &&
string(
argv[3]) ==
string(
"Double"))
212 else if(
string(
argv[1]) ==
string(
"Gen"))
214 SpParHelper::Print(
"Using synthetic data, which we ALWAYS permute for load balance\n");
215 SpParHelper::Print(
"We only balance the original input, we don't repermute after each filter change\n");
216 SpParHelper::Print(
"BFS is run on UNDIRECTED graph, hence hitting CCs, and TEPS is bidirectional\n");
218 double initiator[4] = {.57, .19, .19, .05};
266 if(
string(
argv[1]) ==
string(
"File"))
300 if(
string(
argv[1]) ==
string(
"Gen"))
330 outs <<
"Load balance of " <<
static_cast<float>(
keep[i])/100 <<
"% filtered case: " <<
balance <<
endl;
387 while(
fringe.getnnz() > 0)
477 if(
string(
argv[1]) ==
string(
"Gen"))
506 parents.PrintInfo(
"Final parents array");
514 outnew <<
"Number of edges traversed in both directions: " << nedges <<
endl;
515 if(
string(
argv[1]) ==
string(
"File"))
520 outnew <<
"MTEPS (bidirectional): " <<
static_cast<double>(nedges) / (
t2-
t1) / 1000000.0 <<
endl;
552 if(
string(
argv[1]) ==
string(
"Gen"))
571 os <<
"Connected component lower limite was " <<
CC_LIMIT <<
endl;
572 os <<
"Per iteration communication times: " <<
endl;
577 os <<
"--------------------------" <<
endl;
589 os <<
"--------------------------" <<
endl;
592 os <<
"Filter keeps " <<
static_cast<double>(
keep[
trials])/100.0 <<
" percentage of edges" <<
endl;
593 os <<
"Min time: " <<
TIMES[0] <<
" seconds" <<
endl;
600 os <<
"Mean time: " <<
mean <<
" seconds" <<
endl;
602 os <<
"--------------------------" <<
endl;
617 os <<
"Bidirectional Processed Edges per second (to estimate sustained BW)"<<
endl;
double cblas_allgathertime
double cblas_alltoalltime
SpParMat< int64_t, TwitterEdge, SpDCCols< int64_t, TwitterEdge > > PSpMat_Twitter
SpParMat< int64_t, bool, SpDCCols< int64_t, bool > > PSpMat_Bool
void GenGraph500Data(double initiator[4], int log_numverts, int edgefactor, bool scramble=false, bool packed=false)
static void PrintFile(const std::string &s, const std::string &filename)
static void Print(const std::string &s)
int combblas_papi_events[]
std::vector< std::vector< std::vector< long long > > > bfs_counters
int combblas_papi_num_events
std::string combblas_event_names[]
std::string bfs_papi_labels
void Symmetricize(PARMAT &A)
const TwitterEdge operator()(const TwitterEdge &x) const