CGRA-ME
Functions | Variables
ILPMapper.cpp File Reference
#include <CGRA/ILPMapper.h>
#include <algorithm>
#include <CGRA/CGRA.h>
#include <CGRA/ConstraintSet.h>
#include <CGRA/Exception.h>
#include <CGRA/MRRGProcedures.h>
#include <CGRA/OpGraphProcedures.h>
#include <CGRA/utility/Collections.h>
#include <gurobi_c++.h>

Go to the source code of this file.

Functions

std::ostream & operator<< (std::ostream &os, const ILPMapper::ConstraintGroup &lct)
 

Variables

static const std::map< ILPMapper::ConstraintGroup, std::string > lazy_constraint_names
 
AutoRegisterMapper ILPMapper_arm ("ILPMapper", [](std::shared_ptr< CGRA > cgra, int timelimit, const ConfigStore &args) { return std::make_unique< ILPMapper >(cgra, timelimit, args);}, false, "Fully encode the mapping problem in an ILP.\n" "Initially presented in 'An Architecture-Agnostic Integer Linear Programming Approach to CGRA Mapping' (DAC 2018)", { {"enable_topological_order_costing_by_max", 0, ""}, {"enable_topological_order_costing_by_sum", 0, ""}, {"enable_topological_order_mode", 0, ""}, {"lazy_constraint_add_mode", 0, ""}, {"max_threads", 1, ""}, {"mip_gap", 0.2, "Relative threshold on the difference between the primal and dual cost functions to consider a solution optimal"}, {"per_value_topological_order_variables", 0, ""}, {"seed", 0, ""}, {"solution_limit", 1, "Maximum number of solutions that will be considered before giving up and taking the lowest cost one found. Larger values generally lead to more optimal solutions."}, {"model_dump_filename", "", ""}, {"model_IIS_dump_filename", "", ""}, {"verbosity", 0, ""}, }, { {"enable_lazy_constraint_.*", "boolean, controls whether the constraint group that follows is added lazily"}, })
 

Function Documentation

◆ operator<<()

std::ostream& operator<< ( std::ostream &  os,
const ILPMapper::ConstraintGroup lct 
)

Definition at line 56 of file ILPMapper.cpp.

Variable Documentation

◆ ILPMapper_arm

AutoRegisterMapper ILPMapper_arm("ILPMapper",[](std::shared_ptr< CGRA > cgra, int timelimit, const ConfigStore &args) { return std::make_unique< ILPMapper >(cgra, timelimit, args);}, false, "Fully encode the mapping problem in an ILP.\n" "Initially presented in 'An Architecture-Agnostic Integer Linear Programming Approach to CGRA Mapping' (DAC 2018)", { {"enable_topological_order_costing_by_max", 0, ""}, {"enable_topological_order_costing_by_sum", 0, ""}, {"enable_topological_order_mode", 0, ""}, {"lazy_constraint_add_mode", 0, ""}, {"max_threads", 1, ""}, {"mip_gap", 0.2, "Relative threshold on the difference between the primal and dual cost functions to consider a solution optimal"}, {"per_value_topological_order_variables", 0, ""}, {"seed", 0, ""}, {"solution_limit", 1, "Maximum number of solutions that will be considered before giving up and taking the lowest cost one found. Larger values generally lead to more optimal solutions."}, {"model_dump_filename", "", ""}, {"model_IIS_dump_filename", "", ""}, {"verbosity", 0, ""}, }, { {"enable_lazy_constraint_.*", "boolean, controls whether the constraint group that follows is added lazily"}, })

◆ lazy_constraint_names

const std::map<ILPMapper::ConstraintGroup, std::string> lazy_constraint_names
static
Initial value:
{
std::make_pair(ILPMapper::ConstraintGroup::RouteExclusivity, "route_exclusivity"),
std::make_pair(ILPMapper::ConstraintGroup::FunctionUnitExclusivity, "function_unit_exclusivity"),
std::make_pair(ILPMapper::ConstraintGroup::OpsMustBeMapped, "ensure_all_ops_mapped"),
std::make_pair(ILPMapper::ConstraintGroup::FanoutRouting, "fanout_routing"),
std::make_pair(ILPMapper::ConstraintGroup::MuxExclusivity, "mux_exclusivity"),
std::make_pair(ILPMapper::ConstraintGroup::FunctionUnitFanout, "function_unit_fanout"),
std::make_pair(ILPMapper::ConstraintGroup::OpSupported, "op_support"),
std::make_pair(ILPMapper::ConstraintGroup::LinePathBalance, "line_path_balance"),
std::make_pair(ILPMapper::ConstraintGroup::CyclePathBalance, "cycle_path_balance"),
std::make_pair(ILPMapper::ConstraintGroup::EdgeUsage, "fake_edge_used"),
std::make_pair(ILPMapper::ConstraintGroup::TopologicalOrdering, "fake_ordering"),
std::make_pair(ILPMapper::ConstraintGroup::OperandRouting, "ensure that operands are routed correctly"),
std::make_pair(ILPMapper::ConstraintGroup::FunctionUnitFanin, "function_unit_fanin"),
}

Definition at line 40 of file ILPMapper.cpp.

ILPMapper::ConstraintGroup::CyclePathBalance
@ CyclePathBalance
ILPMapper::ConstraintGroup::FunctionUnitFanin
@ FunctionUnitFanin
ILPMapper::ConstraintGroup::FunctionUnitFanout
@ FunctionUnitFanout
ILPMapper::ConstraintGroup::FanoutRouting
@ FanoutRouting
ILPMapper::ConstraintGroup::LinePathBalance
@ LinePathBalance
ILPMapper::ConstraintGroup::EdgeUsage
@ EdgeUsage
ILPMapper::ConstraintGroup::MuxExclusivity
@ MuxExclusivity
ILPMapper::ConstraintGroup::OperandRouting
@ OperandRouting
ILPMapper::ConstraintGroup::OpSupported
@ OpSupported
ILPMapper::ConstraintGroup::TopologicalOrdering
@ TopologicalOrdering
ILPMapper::ConstraintGroup::FunctionUnitExclusivity
@ FunctionUnitExclusivity
ILPMapper::ConstraintGroup::RouteExclusivity
@ RouteExclusivity
ILPMapper::ConstraintGroup::OpsMustBeMapped
@ OpsMustBeMapped