fpmas 1.6
random_load_balancing.h
Go to the documentation of this file.
1#ifndef FPMAS_RANDOM_LB_H
2#define FPMAS_RANDOM_LB_H
3
10#include "fpmas/random/random.h"
11
12namespace fpmas { namespace graph {
15
24 template<typename T>
28 private:
31
32
33 public:
40 : generator(comm), random_rank(0, comm.getSize()-1) {
41 }
42
49
58
66 api::graph::PartitionMap fixed_vertices) override;
67
76 api::graph::PartitionMap fixed_vertices,
78
79 };
80
81 template<typename T>
83 return balance(nodes, api::graph::PARTITION);
84 }
85
86 template<typename T>
89 return balance(nodes, {}, partition_mode);
90 }
91
92 template<typename T>
95 api::graph::PartitionMap fixed_vertices) {
96 return balance(nodes, fixed_vertices, api::graph::PARTITION);
97 }
98
99 template<typename T>
102 api::graph::PartitionMap fixed_vertices,
104 PartitionMap partition = fixed_vertices;
105 for(auto node : nodes) {
106 partition.insert({node.first, random_rank(generator)});
107 }
108 return partition;
109 }
110}}
111#endif
Definition: communication.h:251
Definition: load_balancing.h:47
Definition: load_balancing.h:92
Definition: random_load_balancing.h:27
RandomLoadBalancing(api::communication::MpiCommunicator &comm)
Definition: random_load_balancing.h:39
PartitionMap balance(api::graph::NodeMap< T > nodes) override
Definition: random_load_balancing.h:82
Definition: generator.h:322
Definition: distribution.h:24
std::unordered_map< DistributedId, int, api::graph::IdHash< DistributedId > > PartitionMap
Definition: load_balancing.h:19
PartitionMode
Definition: load_balancing.h:30
@ PARTITION
Definition: load_balancing.h:35
typename graph::Graph< graph::DistributedNode< T >, graph::DistributedEdge< T > >::NodeMap NodeMap
Definition: load_balancing.h:25
Definition: fpmas.cpp:3