From 5a26395c75374035d7e8da4e707390f8681d6830 Mon Sep 17 00:00:00 2001 From: Daniel Seemaier Date: Mon, 4 Sep 2023 14:59:07 +0200 Subject: [PATCH] KaMinPar: reduce memory consumption during initial partitioning. --- kaminpar/partitioning/deep_multilevel.cc | 8 ++++++-- kaminpar/refinement/fm_refiner.cc | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/kaminpar/partitioning/deep_multilevel.cc b/kaminpar/partitioning/deep_multilevel.cc index 6918403f..8705bde3 100644 --- a/kaminpar/partitioning/deep_multilevel.cc +++ b/kaminpar/partitioning/deep_multilevel.cc @@ -155,16 +155,20 @@ PartitionedGraph DeepMultilevelPartitioner::initial_partition(const Graph *graph // initial partitioning. DISABLE_TIMERS(); PartitionedGraph p_graph = [&] { + Context input_ctx = _input_ctx; + input_ctx.partition.n = graph->n(); + input_ctx.partition.m = graph->m(); + switch (_input_ctx.initial_partitioning.mode) { case InitialPartitioningMode::SEQUENTIAL: return helper::bipartition(graph, _input_ctx.partition.k, _input_ctx, _ip_m_ctx_pool); case InitialPartitioningMode::SYNCHRONOUS_PARALLEL: - return SyncInitialPartitioner(_input_ctx, _ip_m_ctx_pool, _ip_extraction_pool) + return SyncInitialPartitioner(input_ctx, _ip_m_ctx_pool, _ip_extraction_pool) .partition(_coarsener.get(), _current_p_ctx); case InitialPartitioningMode::ASYNCHRONOUS_PARALLEL: - return AsyncInitialPartitioner(_input_ctx, _ip_m_ctx_pool, _ip_extraction_pool) + return AsyncInitialPartitioner(input_ctx, _ip_m_ctx_pool, _ip_extraction_pool) .partition(_coarsener.get(), _current_p_ctx); } diff --git a/kaminpar/refinement/fm_refiner.cc b/kaminpar/refinement/fm_refiner.cc index 0a283b52..de87692a 100644 --- a/kaminpar/refinement/fm_refiner.cc +++ b/kaminpar/refinement/fm_refiner.cc @@ -426,11 +426,11 @@ LocalizedFMRefiner::LocalizedFMRefiner( _shared(shared), _d_graph(&_p_graph), _d_gain_cache(_shared.gain_cache), - _block_pq(_p_ctx.k), + _block_pq(_p_graph.k()), _stopping_policy(_fm_ctx.alpha) { _stopping_policy.init(_p_graph.n()); for (const BlockID b : _p_graph.blocks()) { - _node_pqs.emplace_back(_p_ctx.n, _shared.shared_pq_handles.data()); + _node_pqs.emplace_back(_p_graph.n(), _shared.shared_pq_handles.data()); } }