| 667 | }; |
| 668 | |
| 669 | void 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 |
nothing calls this directly
no test coverage detected