1 #ifndef _GALOIS_DIST_GENERICPARTS_H
2 #define _GALOIS_DIST_GENERICPARTS_H
24 return std::make_pair(0u, 0u);
33 std::vector<uint64_t>&)
38 bool keepEdge(uint32_t src, uint32_t dst)
const {
return src < dst; }
42 std::vector<uint64_t>& ndegrees;
46 std::vector<uint64_t>& _ndeg)
52 bool keepEdge(uint32_t src, uint32_t dst)
const {
53 uint64_t sourceDegree = ndegrees[src];
54 uint64_t destDegree = ndegrees[dst];
55 if ((destDegree > sourceDegree) ||
56 ((destDegree == sourceDegree) && (src < dst))) {
68 unsigned numColumnHosts;
71 void factorizeHosts() {
78 assert(numRowHosts >= numColumnHosts);
85 galois::gPrint(
"Cartesian grid: ", numRowHosts,
" x ", numColumnHosts,
91 unsigned gridRowID()
const {
return (
_hostID / numColumnHosts); }
93 unsigned gridRowID(
unsigned id)
const {
return (
id / numColumnHosts); }
95 unsigned gridColumnID()
const {
return (
_hostID % numColumnHosts); }
97 unsigned gridColumnID(
unsigned id)
const {
return (
id % numColumnHosts); }
100 unsigned getColumnOfNode(uint64_t gid)
const {
105 GenericCVC(uint32_t hostID, uint32_t numHosts, uint64_t numNodes,
110 _h_offset = gridRowID() * numColumnHosts;
114 int i = getColumnOfNode(dst);
115 return _h_offset + i;
120 if ((numRowHosts == 1) || (numColumnHosts == 1))
126 ar << numColumnHosts;
130 ar >> numColumnHosts;
134 return std::make_pair(numRowHosts, numColumnHosts);
143 unsigned numRowHosts;
144 unsigned numColumnHosts;
147 void factorizeHosts() {
150 while ((
_numHosts % numColumnHosts) != 0)
153 numRowHosts =
_numHosts / numColumnHosts;
154 assert(numRowHosts >= numColumnHosts);
157 std::swap(numRowHosts, numColumnHosts);
160 galois::gPrint(
"Cartesian grid: ", numRowHosts,
" x ", numColumnHosts,
166 unsigned gridRowID()
const {
return (
_hostID / numColumnHosts); }
168 unsigned gridRowID(
unsigned id)
const {
return (
id / numColumnHosts); }
170 unsigned gridColumnID()
const {
return (
_hostID % numColumnHosts); }
172 unsigned gridColumnID(
unsigned id)
const {
return (
id % numColumnHosts); }
175 unsigned getColumnOfNode(uint64_t gid)
const {
185 _h_offset = gridRowID() * numColumnHosts;
189 int i = getColumnOfNode(dst);
190 return _h_offset + i;
195 if ((numRowHosts == 1) && (numColumnHosts == 1))
202 ar << numColumnHosts;
207 ar >> numColumnHosts;
211 return std::make_pair(numRowHosts, numColumnHosts);
216 uint32_t _vCutThreshold;
219 GenericHVC(uint32_t hostID, uint32_t numHosts, uint64_t numNodes,
223 _vCutThreshold = 1000;
226 uint32_t
getEdgeOwner(uint32_t src, uint32_t dst, uint64_t numEdges)
const {
227 if (numEdges > _vCutThreshold) {
240 return std::make_pair(0u, 0u);
248 uint32_t _vCutThreshold;
258 double getCompositeBalanceParam(
259 unsigned host,
const std::vector<uint64_t>& nodeLoads,
261 const std::vector<uint64_t>& edgeLoads,
264 uint64_t hostNodeLoad = nodeLoads[host] + nodeAccum[host].load();
265 uint64_t hostEdgeLoad = edgeLoads[host] + edgeAccum[host].load();
267 return (hostNodeLoad + (_neRatio * hostEdgeLoad)) / 2;
274 double getFennelBalanceScore(
double param) {
275 return _alpha * _gamma * pow(param, _gamma - 1);
279 GingerP(uint32_t hostID, uint32_t numHosts, uint64_t numNodes,
283 _vCutThreshold = 1000;
285 _alpha = numEdges * pow(numHosts, _gamma - 1.0) / pow(numNodes, _gamma);
286 _neRatio = (double)numNodes / (
double)numEdges;
289 template <
typename EdgeTy>
292 const std::vector<uint32_t>& localNodeToMaster,
293 std::unordered_map<uint64_t, uint32_t>& gid2offsets,
294 const std::vector<uint64_t>& nodeLoads,
296 const std::vector<uint64_t>& edgeLoads,
299 auto ee = bufGraph.
edgeEnd(src);
301 uint64_t ne = std::distance(ii, ee);
304 if (ne > _vCutThreshold) {
311 for (
unsigned i = 0; i <
_numHosts; i++) {
315 for (; ii < ee; ++ii) {
317 size_t offsetIntoMap = (unsigned)-1;
319 auto it = gid2offsets.find(dst);
320 if (it != gid2offsets.end()) {
321 offsetIntoMap = it->second;
327 assert(offsetIntoMap != (
unsigned)-1);
328 assert(offsetIntoMap < localNodeToMaster.size());
330 unsigned currentAssignment = localNodeToMaster[offsetIntoMap];
332 if (currentAssignment != (
unsigned)-1) {
333 scores[currentAssignment] += 1.0;
340 for (
unsigned i = 0; i <
_numHosts; i++) {
341 scores[i] -= getFennelBalanceScore(getCompositeBalanceParam(
342 i, nodeLoads, nodeAccum, edgeLoads, edgeAccum));
345 unsigned bestHost = -1;
346 double bestScore = std::numeric_limits<double>::lowest();
348 for (
unsigned i = 0; i <
_numHosts; i++) {
349 if (scores[i] >= bestScore) {
351 bestScore = scores[i];
357 " with num edge ", ne);
367 uint32_t
getEdgeOwner(uint32_t src, uint32_t dst, uint64_t numEdges)
const {
372 if (numEdges > _vCutThreshold) {
385 return std::make_pair(0u, 0u);
391 uint32_t _vCutThreshold;
401 double getCompositeBalanceParam(
402 unsigned host,
const std::vector<uint64_t>& nodeLoads,
404 const std::vector<uint64_t>& edgeLoads,
407 uint64_t hostNodeLoad = nodeLoads[host] + nodeAccum[host].load();
408 uint64_t hostEdgeLoad = edgeLoads[host] + edgeAccum[host].load();
410 return (hostNodeLoad + (_neRatio * hostEdgeLoad)) / 2;
417 double getFennelBalanceScore(
double param) {
418 return _alpha * _gamma * pow(param, _gamma - 1);
422 FennelP(uint32_t hostID, uint32_t numHosts, uint64_t numNodes,
426 _vCutThreshold = 1000;
428 _alpha = numEdges * pow(numHosts, _gamma - 1.0) / pow(numNodes, _gamma);
429 _neRatio = (double)numNodes / (
double)numEdges;
432 template <
typename EdgeTy>
435 const std::vector<uint32_t>& localNodeToMaster,
436 std::unordered_map<uint64_t, uint32_t>& gid2offsets,
437 const std::vector<uint64_t>& nodeLoads,
439 const std::vector<uint64_t>& edgeLoads,
442 auto ee = bufGraph.
edgeEnd(src);
444 uint64_t ne = std::distance(ii, ee);
447 if (ne > _vCutThreshold) {
454 for (
unsigned i = 0; i <
_numHosts; i++) {
458 for (; ii < ee; ++ii) {
460 size_t offsetIntoMap = (unsigned)-1;
462 auto it = gid2offsets.find(dst);
463 if (it != gid2offsets.end()) {
464 offsetIntoMap = it->second;
470 assert(offsetIntoMap != (
unsigned)-1);
471 assert(offsetIntoMap < localNodeToMaster.size());
473 unsigned currentAssignment = localNodeToMaster[offsetIntoMap];
475 if (currentAssignment != (
unsigned)-1) {
476 scores[currentAssignment] += 1.0;
483 for (
unsigned i = 0; i <
_numHosts; i++) {
484 scores[i] -= getFennelBalanceScore(getCompositeBalanceParam(
485 i, nodeLoads, nodeAccum, edgeLoads, edgeAccum));
488 unsigned bestHost = -1;
489 double bestScore = std::numeric_limits<double>::lowest();
491 for (
unsigned i = 0; i <
_numHosts; i++) {
492 if (scores[i] >= bestScore) {
494 bestScore = scores[i];
500 " with num edge ", ne);
521 return std::make_pair(0u, 0u);
527 uint32_t _vCutThreshold;
534 unsigned numRowHosts;
535 unsigned numColumnHosts;
537 void factorizeHosts() {
540 while ((
_numHosts % numColumnHosts) != 0)
543 numRowHosts =
_numHosts / numColumnHosts;
544 assert(numRowHosts >= numColumnHosts);
547 galois::gPrint(
"Cartesian grid: ", numRowHosts,
" x ", numColumnHosts,
553 unsigned gridRowID()
const {
return (
_hostID / numColumnHosts); }
555 unsigned gridRowID(
unsigned id)
const {
return (
id / numColumnHosts); }
557 unsigned gridColumnID()
const {
return (
_hostID % numColumnHosts); }
559 unsigned gridColumnID(
unsigned id)
const {
return (
id % numColumnHosts); }
562 unsigned getRowOfNode(uint64_t gid)
const {
567 unsigned getColumnOfNode(uint64_t gid)
const {
574 double getCompositeBalanceParam(
575 unsigned host,
const std::vector<uint64_t>& nodeLoads,
577 const std::vector<uint64_t>& edgeLoads,
580 uint64_t hostNodeLoad = nodeLoads[host] + nodeAccum[host].load();
581 uint64_t hostEdgeLoad = edgeLoads[host] + edgeAccum[host].load();
583 return (hostNodeLoad + (_neRatio * hostEdgeLoad)) / 2;
590 double getFennelBalanceScore(
double param) {
591 return _alpha * _gamma * pow(param, _gamma - 1);
595 SugarP(uint32_t hostID, uint32_t numHosts, uint64_t numNodes,
599 _vCutThreshold = 1000;
601 _alpha = numEdges * pow(numHosts, _gamma - 1.0) / pow(numNodes, _gamma);
602 _neRatio = (double)numNodes / (
double)numEdges;
607 template <
typename EdgeTy>
610 const std::vector<uint32_t>& localNodeToMaster,
611 std::unordered_map<uint64_t, uint32_t>& gid2offsets,
612 const std::vector<uint64_t>& nodeLoads,
614 const std::vector<uint64_t>& edgeLoads,
617 auto ee = bufGraph.
edgeEnd(src);
619 uint64_t ne = std::distance(ii, ee);
622 if (ne > _vCutThreshold) {
629 for (
unsigned i = 0; i <
_numHosts; i++) {
633 for (; ii < ee; ++ii) {
635 size_t offsetIntoMap = (unsigned)-1;
637 auto it = gid2offsets.find(dst);
638 if (it != gid2offsets.end()) {
639 offsetIntoMap = it->second;
645 assert(offsetIntoMap != (
unsigned)-1);
646 assert(offsetIntoMap < localNodeToMaster.size());
648 unsigned currentAssignment = localNodeToMaster[offsetIntoMap];
650 if (currentAssignment != (
unsigned)-1) {
651 scores[currentAssignment] += 1.0;
658 for (
unsigned i = 0; i <
_numHosts; i++) {
659 scores[i] -= getFennelBalanceScore(getCompositeBalanceParam(
660 i, nodeLoads, nodeAccum, edgeLoads, edgeAccum));
663 unsigned bestHost = -1;
664 double bestScore = std::numeric_limits<double>::lowest();
666 for (
unsigned i = 0; i <
_numHosts; i++) {
667 if (scores[i] >= bestScore) {
669 bestScore = scores[i];
675 " with num edge ", ne);
689 unsigned blockedRowOffset = getRowOfNode(src) * numColumnHosts;
690 unsigned cyclicColumnOffset = getColumnOfNode(dst);
691 return blockedRowOffset + cyclicColumnOffset;
696 if ((numRowHosts == 1) || (numColumnHosts == 1))
703 ar << numColumnHosts;
708 ar >> numColumnHosts;
712 return std::make_pair(numRowHosts, numColumnHosts);
718 uint32_t _vCutThreshold;
725 unsigned numRowHosts;
726 unsigned numColumnHosts;
728 void factorizeHosts() {
731 while ((
_numHosts % numColumnHosts) != 0)
734 numRowHosts =
_numHosts / numColumnHosts;
735 assert(numRowHosts >= numColumnHosts);
738 std::swap(numRowHosts, numColumnHosts);
741 galois::gPrint(
"Cartesian grid: ", numRowHosts,
" x ", numColumnHosts,
747 unsigned gridRowID()
const {
return (
_hostID / numColumnHosts); }
749 unsigned gridRowID(
unsigned id)
const {
return (
id / numColumnHosts); }
751 unsigned gridColumnID()
const {
return (
_hostID % numColumnHosts); }
753 unsigned gridColumnID(
unsigned id)
const {
return (
id % numColumnHosts); }
756 unsigned getRowOfNode(uint64_t gid)
const {
761 unsigned getColumnOfNode(uint64_t gid)
const {
768 double getCompositeBalanceParam(
769 unsigned host,
const std::vector<uint64_t>& nodeLoads,
771 const std::vector<uint64_t>& edgeLoads,
774 uint64_t hostNodeLoad = nodeLoads[host] + nodeAccum[host].load();
775 uint64_t hostEdgeLoad = edgeLoads[host] + edgeAccum[host].load();
777 return (hostNodeLoad + (_neRatio * hostEdgeLoad)) / 2;
784 double getFennelBalanceScore(
double param) {
785 return _alpha * _gamma * pow(param, _gamma - 1);
793 _vCutThreshold = 1000;
795 _alpha = numEdges * pow(numHosts, _gamma - 1.0) / pow(numNodes, _gamma);
796 _neRatio = (double)numNodes / (
double)numEdges;
801 template <
typename EdgeTy>
804 const std::vector<uint32_t>& localNodeToMaster,
805 std::unordered_map<uint64_t, uint32_t>& gid2offsets,
806 const std::vector<uint64_t>& nodeLoads,
808 const std::vector<uint64_t>& edgeLoads,
811 auto ee = bufGraph.
edgeEnd(src);
813 uint64_t ne = std::distance(ii, ee);
816 if (ne > _vCutThreshold) {
823 for (
unsigned i = 0; i <
_numHosts; i++) {
827 for (; ii < ee; ++ii) {
829 size_t offsetIntoMap = (unsigned)-1;
831 auto it = gid2offsets.find(dst);
832 if (it != gid2offsets.end()) {
833 offsetIntoMap = it->second;
839 assert(offsetIntoMap != (
unsigned)-1);
840 assert(offsetIntoMap < localNodeToMaster.size());
842 unsigned currentAssignment = localNodeToMaster[offsetIntoMap];
844 if (currentAssignment != (
unsigned)-1) {
845 scores[currentAssignment] += 1.0;
852 for (
unsigned i = 0; i <
_numHosts; i++) {
853 scores[i] -= getFennelBalanceScore(getCompositeBalanceParam(
854 i, nodeLoads, nodeAccum, edgeLoads, edgeAccum));
857 unsigned bestHost = -1;
858 double bestScore = std::numeric_limits<double>::lowest();
860 for (
unsigned i = 0; i <
_numHosts; i++) {
861 if (scores[i] >= bestScore) {
863 bestScore = scores[i];
869 " with num edge ", ne);
883 unsigned blockedRowOffset = getRowOfNode(src) * numColumnHosts;
884 unsigned cyclicColumnOffset = getColumnOfNode(dst);
885 return blockedRowOffset + cyclicColumnOffset;
890 if ((numRowHosts == 1) && (numColumnHosts == 1))
896 ar << numColumnHosts;
900 ar >> numColumnHosts;
904 return std::make_pair(numRowHosts, numColumnHosts);
bool isVertexCut() const
Definition: GenericPartitioners.h:381
EdgeIterator edgeEnd(uint64_t globalNodeID)
Get the index to the first edge of the node after the provided node.
Definition: BufferedGraph.h:414
std::pair< unsigned, unsigned > cartesianGrid()
Definition: GenericPartitioners.h:384
bool noCommunication()
Definition: GenericPartitioners.h:118
bool noCommunication()
Definition: GenericPartitioners.h:888
uint32_t getMaster(uint32_t src, galois::graphs::BufferedGraph< EdgeTy > &bufGraph, const std::vector< uint32_t > &localNodeToMaster, std::unordered_map< uint64_t, uint32_t > &gid2offsets, const std::vector< uint64_t > &nodeLoads, std::vector< galois::CopyableAtomic< uint64_t >> &nodeAccum, const std::vector< uint64_t > &edgeLoads, std::vector< galois::CopyableAtomic< uint64_t >> &edgeAccum)
Definition: GenericPartitioners.h:802
uint32_t getEdgeOwner(uint32_t, uint32_t dst, uint64_t) const
Definition: GenericPartitioners.h:113
std::pair< unsigned, unsigned > cartesianGrid()
Definition: GenericPartitioners.h:239
uint32_t getMaster(uint32_t src, galois::graphs::BufferedGraph< EdgeTy > &bufGraph, const std::vector< uint32_t > &localNodeToMaster, std::unordered_map< uint64_t, uint32_t > &gid2offsets, const std::vector< uint64_t > &nodeLoads, std::vector< galois::CopyableAtomic< uint64_t >> &nodeAccum, const std::vector< uint64_t > &edgeLoads, std::vector< galois::CopyableAtomic< uint64_t >> &edgeAccum)
Definition: GenericPartitioners.h:290
std::pair< unsigned, unsigned > cartesianGrid()
Definition: GenericPartitioners.h:711
uint32_t getEdgeOwner(uint32_t src, uint32_t dst, uint64_t) const
return owner of edge using cartesian edge owner determination
Definition: GenericPartitioners.h:882
void deserializePartition(boost::archive::binary_iarchive &)
Definition: GenericPartitioners.h:519
uint32_t _numHosts
total number of hosts
Definition: BasePolicies.h:40
Definition: GenericPartitioners.h:389
Class that loads a portion of a Galois graph from disk directly into memory buffers for access...
Definition: BufferedGraph.h:49
const Ty atomicAdd(std::atomic< Ty > &val, Ty delta)
galois::atomicAdd
Definition: AtomicHelpers.h:89
Policies that use the read assignment of nodes as the masters.
Definition: BasePolicies.h:74
bool noCommunication()
Definition: GenericPartitioners.h:19
void deserializePartition(boost::archive::binary_iarchive &)
Definition: GenericPartitioners.h:383
EdgeIterator edgeBegin(uint64_t globalNodeID)
Get the index to the first edge of the provided node THAT THIS GRAPH HAS LOADED (not necessary the fi...
Definition: BufferedGraph.h:386
bool isVertexCut() const
Definition: GenericPartitioners.h:695
GingerP(uint32_t hostID, uint32_t numHosts, uint64_t numNodes, uint64_t numEdges)
Definition: GenericPartitioners.h:279
bool isVertexCut() const
Definition: GenericPartitioners.h:517
void resize(size_t n)
Definition: PODResizeableArray.h:142
void deserializePartition(boost::archive::binary_iarchive &ar)
Definition: GenericPartitioners.h:706
static bool needNodeDegrees()
Definition: GenericPartitioners.h:36
void gDebug(Args &&...GALOIS_USED_ONLY_IN_DEBUG(args))
Prints a debug string from a sequence of things; prints nothing if NDEBUG is defined.
Definition: gIO.h:72
bool keepEdge(uint32_t src, uint32_t dst) const
Definition: GenericPartitioners.h:38
void deserializePartition(boost::archive::binary_iarchive &ar)
Definition: GenericPartitioners.h:898
uint32_t getMaster(uint32_t src, galois::graphs::BufferedGraph< EdgeTy > &bufGraph, const std::vector< uint32_t > &localNodeToMaster, std::unordered_map< uint64_t, uint32_t > &gid2offsets, const std::vector< uint64_t > &nodeLoads, std::vector< galois::CopyableAtomic< uint64_t >> &nodeAccum, const std::vector< uint64_t > &edgeLoads, std::vector< galois::CopyableAtomic< uint64_t >> &edgeAccum)
Definition: GenericPartitioners.h:608
SugarColumnFlipP(uint32_t hostID, uint32_t numHosts, uint64_t numNodes, uint64_t numEdges)
Definition: GenericPartitioners.h:789
void serializePartition(boost::archive::binary_oarchive &)
Definition: GenericPartitioners.h:382
uint32_t retrieveMaster(uint32_t gid) const
Retrieves a saved master mapping: does not fail if a GID mapping is not found but instead returns -1 ...
Definition: BasePolicies.h:189
uint32_t getMaster(uint32_t src, galois::graphs::BufferedGraph< EdgeTy > &bufGraph, const std::vector< uint32_t > &localNodeToMaster, std::unordered_map< uint64_t, uint32_t > &gid2offsets, const std::vector< uint64_t > &nodeLoads, std::vector< galois::CopyableAtomic< uint64_t >> &nodeAccum, const std::vector< uint64_t > &edgeLoads, std::vector< galois::CopyableAtomic< uint64_t >> &edgeAccum)
Definition: GenericPartitioners.h:433
uint32_t getEdgeOwner(uint32_t, uint32_t dst, uint64_t) const
Definition: GenericPartitioners.h:188
Class that inherits from std::atomic to make it copyable by defining a copy constructor.
Definition: AtomicWrapper.h:40
bool isVertexCut() const
Definition: GenericPartitioners.h:236
void serializePartition(boost::archive::binary_oarchive &ar)
Definition: GenericPartitioners.h:124
bool keepEdge(uint32_t src, uint32_t dst) const
Definition: GenericPartitioners.h:52
uint32_t _hostID
host ID of owner of this object
Definition: BasePolicies.h:39
uint32_t getEdgeOwner(uint32_t src, uint32_t dst, uint64_t numEdges) const
Definition: GenericPartitioners.h:226
NoCommunication(uint32_t, uint32_t numHosts, uint64_t, uint64_t)
Definition: GenericPartitioners.h:12
void deserializePartition(boost::archive::binary_iarchive &)
Definition: GenericPartitioners.h:238
Definition: GenericPartitioners.h:10
uint32_t getEdgeOwner(uint32_t src, uint32_t dst, uint64_t numEdges) const
Definition: GenericPartitioners.h:367
Definition: GenericPartitioners.h:246
Definition: GenericPartitioners.h:142
bool noCommunication()
Definition: GenericPartitioners.h:234
std::pair< unsigned, unsigned > cartesianGrid()
Definition: GenericPartitioners.h:210
bool noCommunication()
Definition: GenericPartitioners.h:515
uint32_t retrieveMaster(uint32_t gid) const
Returns the host ID of the host that read a particular node and its edges from disk.
Definition: BasePolicies.h:90
void gPrint(Args &&...args)
Prints a sequence of things.
Definition: gIO.h:47
Definition: GenericPartitioners.h:30
void serializePartition(boost::archive::binary_oarchive &ar)
Definition: GenericPartitioners.h:894
uint64_t getNodeOffset() const
Definition: BufferedGraph.h:304
MiningPolicyNaive(uint32_t, uint32_t numHosts, uint64_t, uint64_t, std::vector< uint64_t > &)
Definition: GenericPartitioners.h:32
MiningPolicyDegrees(uint32_t, uint32_t numHosts, uint64_t, uint64_t, std::vector< uint64_t > &_ndeg)
Definition: GenericPartitioners.h:45
void serializePartition(boost::archive::binary_oarchive &ar)
Definition: GenericPartitioners.h:200
CustomMasterAssignment(uint32_t hostID, uint32_t numHosts, uint64_t numNodes, uint64_t numEdges)
Calls parent constructor to initialize common data.
Definition: BasePolicies.h:176
bool isVertexCut() const
Definition: GenericPartitioners.h:20
void serializePartition(boost::archive::binary_oarchive &)
Definition: GenericPartitioners.h:237
Header file that includes the base classes for defining CuSP partitioning policies.
void serializePartition(boost::archive::binary_oarchive &ar)
Definition: GenericPartitioners.h:701
Policies that use a custom assignment of masters (from the user).
Definition: BasePolicies.h:147
SugarP(uint32_t hostID, uint32_t numHosts, uint64_t numNodes, uint64_t numEdges)
Definition: GenericPartitioners.h:595
uint32_t getEdgeOwner(uint32_t src, uint32_t, uint64_t) const
Definition: GenericPartitioners.h:15
Contains the implementation for DistGraph.
Definition: GenericPartitioners.h:66
Definition: GenericPartitioners.h:215
std::pair< unsigned, unsigned > cartesianGrid()
Definition: GenericPartitioners.h:23
FennelP(uint32_t hostID, uint32_t numHosts, uint64_t numNodes, uint64_t numEdges)
Definition: GenericPartitioners.h:422
uint32_t getEdgeOwner(uint32_t src, uint32_t dst, uint64_t) const
return owner of edge using cartesian edge owner determination
Definition: GenericPartitioners.h:688
Definition: GenericPartitioners.h:716
std::pair< unsigned, unsigned > cartesianGrid()
Definition: GenericPartitioners.h:133
void serializePartition(boost::archive::binary_oarchive &)
Definition: GenericPartitioners.h:518
GenericCVC(uint32_t hostID, uint32_t numHosts, uint64_t numNodes, uint64_t numEdges)
Definition: GenericPartitioners.h:105
bool noCommunication()
Definition: GenericPartitioners.h:694
uint32_t getEdgeOwner(uint32_t src, uint32_t, uint64_t) const
Definition: GenericPartitioners.h:511
void deserializePartition(boost::archive::binary_iarchive &)
Definition: GenericPartitioners.h:22
GenericCVCColumnFlip(uint32_t hostID, uint32_t numHosts, uint64_t numNodes, uint64_t numEdges)
Definition: GenericPartitioners.h:180
This is a container that encapsulates a resizeable array of plain-old-datatype (POD) elements...
Definition: PODResizeableArray.h:40
bool isVertexCut() const
Definition: GenericPartitioners.h:194
void deserializePartition(boost::archive::binary_iarchive &ar)
Definition: GenericPartitioners.h:128
bool isVertexCut() const
Definition: GenericPartitioners.h:889
void serializePartition(boost::archive::binary_oarchive &)
Definition: GenericPartitioners.h:21
bool noCommunication()
Definition: GenericPartitioners.h:379
uint64_t edgeDestination(uint64_t globalEdgeID)
Get the global node id of the destination of the provided edge.
Definition: BufferedGraph.h:437
GenericHVC(uint32_t hostID, uint32_t numHosts, uint64_t numNodes, uint64_t numEdges)
Definition: GenericPartitioners.h:219
std::pair< unsigned, unsigned > cartesianGrid()
Definition: GenericPartitioners.h:520
void deserializePartition(boost::archive::binary_iarchive &ar)
Definition: GenericPartitioners.h:205
static bool needNodeDegrees()
Definition: GenericPartitioners.h:50
Definition: GenericPartitioners.h:525
Definition: GenericPartitioners.h:41
ReadMasterAssignment(uint32_t hostID, uint32_t numHosts, uint64_t numNodes, uint64_t numEdges)
Constructor simply calls parent constructor.
Definition: BasePolicies.h:79
bool isVertexCut() const
Definition: GenericPartitioners.h:119
std::pair< unsigned, unsigned > cartesianGrid()
Definition: GenericPartitioners.h:903
bool noCommunication()
Definition: GenericPartitioners.h:193