Skip to content

Commit 4b8b488

Browse files
initialization in Hgraph partitioning app
1 parent da0a0e8 commit 4b8b488

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

apps/ilp_hypergraph_partitioner.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ limitations under the License.
2626
#include "osp/auxiliary/misc.hpp"
2727
#include "osp/graph_algorithms/directed_graph_path_util.hpp"
2828
#include "osp/auxiliary/io/general_file_reader.hpp"
29+
#include "osp/partitioning/partitioners/generic_FM.hpp"
2930
#include "osp/partitioning/partitioners/partitioning_ILP.hpp"
3031
#include "osp/partitioning/partitioners/partitioning_ILP_replication.hpp"
3132
#include "osp/graph_implementations/adj_list_impl/computational_dag_vector_impl.hpp"
@@ -101,13 +102,22 @@ int main(int argc, char *argv[]) {
101102
PartitioningProblem instance(hgraph, static_cast<unsigned>(nr_parts));
102103
instance.setMaxWorkWeightViaImbalanceFactor(imbalance);
103104

105+
Partitioning initial_partition(instance);
106+
GenericFM fm;
107+
for(size_t node = 0; node < hgraph.num_vertices(); ++node)
108+
initial_partition.setAssignedPartition(node, static_cast<unsigned>(node % static_cast<size_t>(nr_parts)));
109+
if(nr_parts == 2)
110+
fm.ImprovePartitioning(initial_partition);
111+
if(nr_parts == 4 || nr_parts == 8 || nr_parts == 16 || nr_parts == 32)
112+
fm.RecursiveFM(initial_partition);
113+
104114
if (replicate > 0) {
105115

106116
PartitioningWithReplication partition(instance);
107117
HypergraphPartitioningILPWithReplication partitioner;
108118

109119
for(size_t node = 0; node < hgraph.num_vertices(); ++node)
110-
partition.setAssignedPartitions(node, {static_cast<unsigned>(node % static_cast<size_t>(nr_parts))});
120+
partition.setAssignedPartitions(node, {initial_partition.assignedPartition(node)});
111121
if(partition.satisfiesBalanceConstraint())
112122
partitioner.setUseInitialSolution(true);
113123

@@ -132,7 +142,7 @@ int main(int argc, char *argv[]) {
132142
HypergraphPartitioningILP partitioner;
133143

134144
for(size_t node = 0; node < hgraph.num_vertices(); ++node)
135-
partition.setAssignedPartition(node, static_cast<unsigned>(node % static_cast<size_t>(nr_parts)));
145+
partition.setAssignedPartition(node, initial_partition.assignedPartition(node));
136146
if(partition.satisfiesBalanceConstraint())
137147
partitioner.setUseInitialSolution(true);
138148

0 commit comments

Comments
 (0)