Program Listing for File CandidatePoolService.h

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

#ifndef PARTITION_REFINE_PIPELINE_CANDIDATEPOOLSERVICE_H_
#define PARTITION_REFINE_PIPELINE_CANDIDATEPOOLSERVICE_H_

#include "refine/core/RefinementRunTypes.h"


class CandidatePoolService {
 public:
  using RefinementFn = std::function<double(CandidateRefinementRequest &)>;

  static void localSearch(const fpga &fpgas, const graph &level_graph,
                          vector<int> &offspring,
                          vector<VectorXi> &occupied_resources,
                          HSFullTiming::HSPartitionFlow &pFlow,
                          float &worst_slack,
                          const RefinementFn &refinement_fn);

  static void runLocalSearchBatch(
      const fpga &fpgas, int thread, const graph &level_graph,
      vector<vector<int>> &candidate_parts,
      vector<vector<VectorXi>> &candidate_occupied_resources,
      HSFullTiming::HSPartitionFlow &pFlow, vector<float> &worst_slacks,
      const RefinementFn &refinement_fn);

  static void runRefinementBatch(
      int thread, const graph &level_graph, const fpga &fpgas,
      vector<vector<int>> &candidate_parts,
      vector<vector<VectorXi>> &candidate_occupied_resources,
      int remaining_solutions, HSFullTiming::HSPartitionFlow &pFlow,
      vector<float> &worst_slacks, const RefinementFn &refinement_fn,
      bool decreaseMaxHopCntPriority = true);
};

#endif