Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 0e03cd4

Browse files
committedJul 27, 2020
Add adaptive variant of SSSP.
1 parent 1de76b8 commit 0e03cd4

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed
 

‎lonestar/analytics/cpu/sssp/SSSP.cpp

+14-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,10 @@ 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+
453461
case deltaStepBarrier:
454462
deltaStepAlgo<UpdateRequest, OBIM_Barrier>(graph, source, ReqPushWrap(),
455463
OutEdgeRangeFn{graph});

0 commit comments

Comments
 (0)
Please sign in to comment.