Program Listing for File partition.h

Return to documentation for file (src/partition/partition.h)

#ifndef PARTITION_H
#define PARTITION_H

#include <future>

#include "defs.h"
#include "initial.h"
#include "refine/RefinementFacade.h"
#include "refine/pipeline/CandidateSelector.h"
#include "refine/pipeline/FPGARemapper.h"


void COCP(MultilevelCoarsener &mc, const graph &finest, const fpga &fpgas,
          const PartitionParams &para, int thread,
          vector<vector<int>> &candidate_parts,
          vector<vector<VectorXi>> &candidate_available_resources,
          HSFullTiming::HSPartitionFlow &pFlow);

void V_Cycle(graph &finest, const fpga &fpgas, const PartitionParams &para,
             int thread, vector<vector<int>> &candidate_parts,
             vector<vector<VectorXi>> &candidate_available_resources,
             HSFullTiming::HSPartitionFlow &pFlow);

int multilevel(const graph &finest, const fpga &fpgas,
               const PartitionParams &para, int thread, int coarsen_order,
               vector<vector<int>> &multi_candidate_parts,
               vector<vector<VectorXi>> &multi_candidate_available_resources,
               vector<Metrics> &multi_candidate_metrics, mutex &mtx,
               HSFullTiming::HSPartitionFlow &pFlow);

int partition(graph &finest, fpga &fpgas, vector<int> &parts,
              const PartitionParams &para, int thread,
              HSFullTiming::HSPartitionFlow &pFlow);

int partition(graph &finest, fpga &fpgas, vector<int> &parts,
              const PartitionParams &para, int thread,
              flat_hash_map<string, fixInfo> &fixed_assignment,
              unordered_map<string, vector<string>> &group_assignment,
              flat_hash_map<string, int> &name_map,
              HSFullTiming::HSPartitionFlow &pFlow);

void separateGraph(const graph &finest, const fpga &fpgas,
                   const vector<int> &parts, vector<graph> &sub_graphs,
                   vector<flat_hash_map<int, int>> &id2node);

int partitionHierarchyGraph(
    graph &finest, const hierarchy &hierarchy_root, const PartitionParams &para,
    int thread, vector<vector<int>> &node_paths,
    HSFullTiming::HSPartitionFlow &pFlow,
    vector<HierarchyPartitionCutRecord> *cut_records = nullptr,
    graph *dedup_root_graph                          = nullptr);

#endif