| 614 | } |
| 615 | |
| 616 | void process_mapping(int* n, int* vwgt, kahip_idx* xadj, |
| 617 | kahip_idx* adjcwgt, kahip_idx* adjncy, |
| 618 | int* hierarchy_parameter, int* distance_parameter, int hierarchy_depth, |
| 619 | int mode_partitioning, int mode_mapping, |
| 620 | double* imbalance, |
| 621 | bool suppress_output, int seed, |
| 622 | kahip_idx* edgecut, int* qap, int* part) { |
| 623 | |
| 624 | configuration cfg; |
| 625 | PartitionConfig partition_config; |
| 626 | partition_config.k = 1; |
| 627 | |
| 628 | switch( mode_partitioning ) { |
| 629 | case FAST: |
| 630 | cfg.fast(partition_config); |
| 631 | break; |
| 632 | case ECO: |
| 633 | cfg.eco(partition_config); |
| 634 | break; |
| 635 | case STRONG: |
| 636 | cfg.strong(partition_config); |
| 637 | break; |
| 638 | case FASTSOCIAL: |
| 639 | cfg.fastsocial(partition_config); |
| 640 | break; |
| 641 | case ECOSOCIAL: |
| 642 | cfg.ecosocial(partition_config); |
| 643 | break; |
| 644 | case STRONGSOCIAL: |
| 645 | cfg.strongsocial(partition_config); |
| 646 | break; |
| 647 | default: |
| 648 | cfg.eco(partition_config); |
| 649 | break; |
| 650 | } |
| 651 | |
| 652 | partition_config.group_sizes.clear(); |
| 653 | partition_config.distances.clear(); |
| 654 | for( int i = 0; i < hierarchy_depth; i++) { |
| 655 | partition_config.group_sizes.push_back(hierarchy_parameter[i]); |
| 656 | partition_config.distances.push_back(distance_parameter[i]); |
| 657 | } |
| 658 | |
| 659 | // compute k |
| 660 | for( unsigned int i = 0; i < partition_config.group_sizes.size(); i++) { |
| 661 | partition_config.k *= partition_config.group_sizes[i]; |
| 662 | } |
| 663 | |
| 664 | partition_config.seed = seed; |
| 665 | internal_processmapping_call(partition_config, suppress_output, n, vwgt, xadj, adjcwgt, adjncy, mode_mapping, imbalance, edgecut, qap, part); |
| 666 | |
| 667 | }; |
| 668 | |
| 669 | void edge_partitioning(int* n, int* vwgt, kahip_idx* xadj, |
| 670 | kahip_idx* adjcwgt, kahip_idx* adjncy, int* nparts, |