CGRA-ME
Classes | Typedefs | Functions | Variables
HeuristicMappers.h File Reference
#include <CGRA/ConfigStore.h>
#include <CGRA/Mapper.h>
#include <CGRA/Mapping.h>
#include <CGRA/MRRG.h>
#include <CGRA/MRRGProcedureCache.h>
#include <CGRA/OpGraph.h>
#include <functional>
#include <iosfwd>

Go to the source code of this file.

Classes

struct  ILPHeuristicMapperOptions
 
struct  ILPHeuristicMapperOptions::Solvers
 
struct  ILPHeuristicMapperOptions::Solvers::SolverID
 
struct  ILPHeuristicMapperCaches
 
class  ILPHeuristicMapper
 

Typedefs

using NeighbourFinder = std::function< FunctionalUnitNeighbours(const MRRG &, const std::vector< MRRG::NodeDescriptor > &)>
 
using SolutionSelector = std::function< Mapping(const Mapping &)>
 
using EdgeCoster = std::function< double(const FunctionalUnitNeighbours &fu_neighbours, const OpGraphOp &src_op, const MRRG::NodeDescriptor &src_node, const OpGraphOp &sink_op, const MRRG::NodeDescriptor &sink_node)>
 
using FUCoster = std::function< double(const OpGraph &opgraph, const MRRG &mrrg, const OpGraph::OpDescriptor &op, const MRRG::NodeDescriptor &node)>
 
using NodeFilter = std::function< bool(const MRRG::NodeDescriptor &node)>
 
using OpNodeFilter = std::function< bool(const OpGraph::OpDescriptor &op, const MRRG::NodeDescriptor &node)>
 
using MapOpsJustByConnectivityOptions = ILPHeuristicMapperOptions
 
using RouteOpMappingByChoosingPathsOptions = ILPHeuristicMapperOptions
 

Functions

Mapping mapViaConnectivityAndPathChoosing (std::unordered_map< std::string, std::string > fix_port, const OpGraph &opgraph, const MRRG &mrrg, const Mapping &initial_mapping, ILPHeuristicMapperOptions options, ILPHeuristicMapperCaches caches={})
 
Mapping mapOpsJustByConnectivity (std::unordered_map< std::string, std::string > fix_port, const OpGraph &opgraph, const MRRG &mrrg, ILPHeuristicMapperOptions options, ILPHeuristicMapperCaches caches={}, Mapping initial_mapping=Mapping{std::make_shared< CGRA >(), -1, std::make_shared< OpGraph >()})
 
Mapping routeOpMappingByChoosingPaths (std::unordered_map< std::string, std::string > fix_port, const Mapping &op_mapping, const OpGraph &opgraph, const MRRG &mrrg, RouteOpMappingByChoosingPathsOptions options={ {}, acceptTheFirstSolution, {} }, ILPHeuristicMapperCaches caches={})
 

Variables

const SolutionSelector acceptTheFirstSolution = [](const Mapping& m){ Mapping copy = m; copy.setStatus(MappingStatus::success); return copy; }
 
const EdgeCoster noEdgeCosting = {}
 
const NodeFilter allowAllNodes
 
const OpNodeFilter allowAllNodesForOps
 

Typedef Documentation

◆ EdgeCoster

using EdgeCoster = std::function<double( const FunctionalUnitNeighbours& fu_neighbours, const OpGraphOp& src_op, const MRRG::NodeDescriptor& src_node, const OpGraphOp& sink_op, const MRRG::NodeDescriptor& sink_node )>

Definition at line 34 of file HeuristicMappers.h.

◆ FUCoster

using FUCoster = std::function<double( const OpGraph& opgraph, const MRRG& mrrg, const OpGraph::OpDescriptor& op, const MRRG::NodeDescriptor& node )>

Definition at line 39 of file HeuristicMappers.h.

◆ MapOpsJustByConnectivityOptions

Definition at line 134 of file HeuristicMappers.h.

◆ NeighbourFinder

using NeighbourFinder = std::function<FunctionalUnitNeighbours(const MRRG&, const std::vector<MRRG::NodeDescriptor>&)>

Definition at line 26 of file HeuristicMappers.h.

◆ NodeFilter

using NodeFilter = std::function<bool( const MRRG::NodeDescriptor& node )>

Definition at line 46 of file HeuristicMappers.h.

◆ OpNodeFilter

using OpNodeFilter = std::function<bool( const OpGraph::OpDescriptor& op, const MRRG::NodeDescriptor& node )>

Definition at line 53 of file HeuristicMappers.h.

◆ RouteOpMappingByChoosingPathsOptions

Definition at line 154 of file HeuristicMappers.h.

◆ SolutionSelector

using SolutionSelector = std::function<Mapping(const Mapping&)>

Definition at line 28 of file HeuristicMappers.h.

Function Documentation

◆ mapOpsJustByConnectivity()

Mapping mapOpsJustByConnectivity ( std::unordered_map< std::string, std::string >  fix_port,
const OpGraph opgraph,
const MRRG mrrg,
ILPHeuristicMapperOptions  options,
ILPHeuristicMapperCaches  caches = {},
Mapping  initial_mapping = Mapping{std::make_shared< CGRA >(), -1, std::make_shared< OpGraph >()} 
)

Finds compatible FU nodes in mrrg for the ops in opgraph, and uses just the connectivity of these FUs to come up with a op mapping.

Definition at line 1707 of file HeuristicMappers.cpp.

◆ mapViaConnectivityAndPathChoosing()

Mapping mapViaConnectivityAndPathChoosing ( std::unordered_map< std::string, std::string >  fix_port,
const OpGraph opgraph,
const MRRG mrrg,
const Mapping initial_mapping,
ILPHeuristicMapperOptions  options,
ILPHeuristicMapperCaches  caches = {} 
)

Definition at line 347 of file HeuristicMappers.cpp.

◆ routeOpMappingByChoosingPaths()

Mapping routeOpMappingByChoosingPaths ( std::unordered_map< std::string, std::string >  fix_port,
const Mapping op_mapping,
const OpGraph opgraph,
const MRRG mrrg,
RouteOpMappingByChoosingPathsOptions  options = { {}, acceptTheFirstSolution, {} },
ILPHeuristicMapperCaches  caches = {} 
)

Queries op_mapping for the FUs that the ops in opgraph are mapped to, finds candidate paths between those FUs, and tries to find a legal set of paths.

Definition at line 1718 of file HeuristicMappers.cpp.

Variable Documentation

◆ acceptTheFirstSolution

const SolutionSelector acceptTheFirstSolution = [](const Mapping& m){ Mapping copy = m; copy.setStatus(MappingStatus::success); return copy; }

Definition at line 41 of file HeuristicMappers.h.

◆ allowAllNodes

const NodeFilter allowAllNodes

Definition at line 31 of file HeuristicMappers.cpp.

◆ allowAllNodesForOps

const OpNodeFilter allowAllNodesForOps

Definition at line 32 of file HeuristicMappers.cpp.

◆ noEdgeCosting

const EdgeCoster noEdgeCosting = {}

Definition at line 42 of file HeuristicMappers.h.