Skip to content

Commit 7e3d5ca

Browse files
Add adaptive variant of SSSP.
1 parent 8df4cd2 commit 7e3d5ca

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

lonestar/analytics/cpu/sssp/SSSP.cpp

+15-6
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919

2020
#include "galois/Galois.h"
21+
#include "galois/worklists/AdaptiveObim.h"
2122
#include "galois/AtomicHelpers.h"
2223
#include "galois/Reduction.h"
2324
#include "galois/PriorityQueue.h"
@@ -59,6 +60,7 @@ enum Algo {
5960
deltaTile = 0,
6061
deltaStep,
6162
deltaStepBarrier,
63+
deltaStepAdaptive,
6264
serDeltaTile,
6365
serDelta,
6466
dijkstraTile,
@@ -69,15 +71,17 @@ enum Algo {
6971
};
7072

7173
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"};
7578

7679
static cll::opt<Algo> algo(
7780
"algo", cll::desc("Choose an algorithm (default value auto):"),
7881
cll::values(clEnumVal(deltaTile, "deltaTile"),
7982
clEnumVal(deltaStep, "deltaStep"),
8083
clEnumVal(deltaStepBarrier, "deltaStepBarrier"),
84+
clEnumVal(deltaStepAdaptive, "deltaStepAdaptive"),
8185
clEnumVal(serDeltaTile, "serDeltaTile"),
8286
clEnumVal(serDelta, "serDelta"),
8387
clEnumVal(dijkstraTile, "dijkstraTile"),
@@ -111,9 +115,9 @@ using TileRangeFn = SSSP::TileRangeFn;
111115
namespace gwl = galois::worklists;
112116
using PSchunk = gwl::PerSocketChunkFIFO<CHUNK_SIZE>;
113117
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;
117121

118122
template <typename T, typename OBIMTy = OBIM, typename P, typename R>
119123
void deltaStepAlgo(Graph& graph, GNode source, const P& pushWrap,
@@ -450,6 +454,11 @@ int main(int argc, char** argv) {
450454
topoTileAlgo(graph, source);
451455
break;
452456

457+
case deltaStepAdaptive:
458+
deltaStepAlgo<UpdateRequest, OBIM_Adaptive>(graph, source, ReqPushWrap(),
459+
OutEdgeRangeFn{graph});
460+
break;
461+
453462
case deltaStepBarrier:
454463
deltaStepAlgo<UpdateRequest, OBIM_Barrier>(graph, source, ReqPushWrap(),
455464
OutEdgeRangeFn{graph});

0 commit comments

Comments
 (0)