MCPcopy Create free account
hub / github.com/KaHIP/KaHIP / edge_partitioning

Function edge_partitioning

interface/kaHIP_interface.cpp:669–705  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

667};
668
669void edge_partitioning(int* n, int* vwgt, kahip_idx* xadj,
670 kahip_idx* adjcwgt, kahip_idx* adjncy, int* nparts,
671 double* imbalance, bool suppress_output, int seed, int mode,
672 int* vertexcut, int* part, kahip_idx infinity_edge_weight) {
673 configuration cfg;
674 PartitionConfig partition_config;
675 partition_config.k = *nparts;
676
677 internal_kaffpa_set_configuration(cfg, partition_config, mode);
678
679 partition_config.seed = seed;
680 partition_config.imbalance = 100*(*imbalance);
681
682 graph_access G;
683 internal_build_graph( partition_config, n, vwgt, xadj, adjcwgt, adjncy, G);
684
685 spac splitter(G, infinity_edge_weight);
686 graph_access &split_G = splitter.construct_split_graph();
687
688 balance_configuration bc;
689 bc.configurate_balance(partition_config, split_G);
690
691 std::srand(static_cast<unsigned int>(seed));
692 random_functions::setSeed(seed);
693
694 graph_partitioner partitioner;
695 partitioner.perform_partitioning(partition_config, split_G);
696
697 splitter.fix_cut_dominant_edges();
698 std::vector<PartitionID> edge_partition = splitter.project_partition();
699
700 *vertexcut = static_cast<int>(splitter.calculate_vertex_cut(edge_partition));
701
702 for (std::size_t i = 0; i < edge_partition.size(); ++i) {
703 part[i] = edge_partition[i];
704 }
705}
706
707

Callers

nothing calls this directly

Calls 8

configurate_balanceMethod · 0.80
internal_build_graphFunction · 0.70
perform_partitioningMethod · 0.45
project_partitionMethod · 0.45
calculate_vertex_cutMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected