18
18
*/
19
19
20
20
#include " galois/Galois.h"
21
+ #include " galois/worklists/AdaptiveObim.h"
21
22
#include " galois/AtomicHelpers.h"
22
23
#include " galois/Reduction.h"
23
24
#include " galois/PriorityQueue.h"
@@ -59,6 +60,7 @@ enum Algo {
59
60
deltaTile = 0 ,
60
61
deltaStep,
61
62
deltaStepBarrier,
63
+ deltaStepAdaptive,
62
64
serDeltaTile,
63
65
serDelta,
64
66
dijkstraTile,
@@ -69,15 +71,17 @@ enum Algo {
69
71
};
70
72
71
73
const char * const ALGO_NAMES[] = {
72
- " deltaTile" , " deltaStep" , " deltaStepBarrier" , " serDeltaTile" ,
73
- " serDelta" , " dijkstraTile" , " dijkstra" , " topo" ,
74
- " topoTile" , " Auto" };
74
+ " deltaTile" , " deltaStep" , " deltaStepBarrier" ,
75
+ " deltaStepAdaptive" , " serDeltaTile" , " serDelta" ,
76
+ " dijkstraTile" , " dijkstra" , " topo" ,
77
+ " topoTile" , " Auto" };
75
78
76
79
static cll::opt<Algo> algo (
77
80
" algo" , cll::desc(" Choose an algorithm (default value auto):" ),
78
81
cll::values(clEnumVal(deltaTile, " deltaTile" ),
79
82
clEnumVal(deltaStep, " deltaStep" ),
80
83
clEnumVal(deltaStepBarrier, " deltaStepBarrier" ),
84
+ clEnumVal(deltaStepAdaptive, " deltaStepAdaptive" ),
81
85
clEnumVal(serDeltaTile, " serDeltaTile" ),
82
86
clEnumVal(serDelta, " serDelta" ),
83
87
clEnumVal(dijkstraTile, " dijkstraTile" ),
@@ -111,9 +115,9 @@ using TileRangeFn = SSSP::TileRangeFn;
111
115
namespace gwl = galois::worklists;
112
116
using PSchunk = gwl::PerSocketChunkFIFO<CHUNK_SIZE>;
113
117
using OBIM = gwl::OrderedByIntegerMetric<UpdateRequestIndexer, PSchunk>;
114
- using OBIM_Barrier =
115
- gwl::OrderedByIntegerMetric <UpdateRequestIndexer,
116
- PSchunk> ::with_barrier<true >::type;
118
+ using OBIM_Adaptive =
119
+ gwl::AdaptiveOrderedByIntegerMetric <UpdateRequestIndexer, PSchunk>;
120
+ using OBIM_Barrier = OBIM ::with_barrier<true >::type;
117
121
118
122
template <typename T, typename OBIMTy = OBIM, typename P, typename R>
119
123
void deltaStepAlgo (Graph& graph, GNode source, const P& pushWrap,
@@ -450,6 +454,10 @@ int main(int argc, char** argv) {
450
454
topoTileAlgo (graph, source);
451
455
break ;
452
456
457
+ case deltaStepAdaptive:
458
+ deltaStepAlgo<UpdateRequest, OBIM_Adaptive>(graph, source, ReqPushWrap (),
459
+ OutEdgeRangeFn{graph});
460
+
453
461
case deltaStepBarrier:
454
462
deltaStepAlgo<UpdateRequest, OBIM_Barrier>(graph, source, ReqPushWrap (),
455
463
OutEdgeRangeFn{graph});
0 commit comments