1#ifndef HALIDE_INTERNAL_REGION_COSTS_H
2#define HALIDE_INTERNAL_REGION_COSTS_H
41 stream <<
"[arith: " << c.
arith <<
", memory: " << c.
memory <<
"]";
50 std::map<std::string, Function>
env;
68 const std::set<std::string> &inlines = std::set<std::string>());
74 const std::set<std::string> &inlines = std::set<std::string>());
80 const std::set<std::string> &inlines = std::set<std::string>());
85 const std::set<std::string> &inlines = std::set<std::string>());
90 const std::set<std::string> &inlines = std::set<std::string>())
const;
96 const std::set<std::string> &inlines = std::set<std::string>());
102 std::map<std::string, Expr>
104 const std::set<std::string> &inlines = std::set<std::string>());
108 std::map<std::string, Expr>
110 const std::set<std::string> &inlines = std::set<std::string>());
114 std::map<std::string, Expr>
116 const std::set<std::string> &inlines = std::set<std::string>());
120 std::map<std::string, Expr>
122 const std::set<std::string> &inlines = std::set<std::string>());
131 const std::set<std::string> &inlined = std::set<std::string>());
146 const std::vector<std::string> &
order);
Defines util functions that used by auto scheduler.
Defines the Interval class.
Defines the Scope class, which is used for keeping track of names in a scope while traversing IR.
A reference-counted handle to Halide's internal representation of a function.
A common pattern when traversing Halide IR is that you need to keep track of stuff when you find a Le...
bool is_func_trivial_to_inline(const Function &func)
Return true if the cost of inlining a function is equivalent to the cost of calling the function dire...
std::map< std::string, Interval > DimBounds
This file defines the class FunctionDAG, which is our representation of a Halide pipeline,...
@ Internal
Not visible externally, similar to 'static' linkage in C.
signed __INT64_TYPE__ int64_t
A fragment of Halide syntax.
Represents the bounds of a region of arbitrary dimension.
friend std::ostream & operator<<(std::ostream &stream, const Cost &c)
Cost(Expr arith, Expr memory)
Cost(int64_t arith, int64_t memory)
HALIDE_ALWAYS_INLINE bool defined() const
Auto scheduling component which is used to assign costs for computing a region of a function or one o...
Cost region_cost(const std::string &func, const Box ®ion, const std::set< std::string > &inlines=std::set< std::string >())
Return the cost of producing a region of function 'func'.
Expr region_footprint(const std::map< std::string, Box > ®ions, const std::set< std::string > &inlined=std::set< std::string >())
Return the size of the peak amount of memory allocated in bytes.
Expr region_size(const std::string &func, const Box ®ion)
Return the size of the region of 'func' in bytes.
Cost region_cost(const std::map< std::string, Box > ®ions, const std::set< std::string > &inlines=std::set< std::string >())
Same as region_cost above but this computes the total cost of many function regions.
Scope< Interval > input_estimates
A scope containing the estimated min/extent values of ImageParams in the pipeline.
std::map< std::string, Expr > detailed_load_costs(const std::string &func, const Box ®ion, const std::set< std::string > &inlines=std::set< std::string >())
Same as stage_detailed_load_costs above but this computes the cost of a region of 'func'.
std::map< std::string, Expr > detailed_load_costs(const std::map< std::string, Box > ®ions, const std::set< std::string > &inlines=std::set< std::string >())
Same as detailed_load_costs above but this computes the cost of many function regions and aggregates ...
std::vector< std::string > order
Realization order of functions in the pipeline.
void disp_func_costs()
Display the cost of each function in the pipeline.
Cost stage_region_cost(const std::string &func, int stage, const DimBounds &bounds, const std::set< std::string > &inlines=std::set< std::string >())
Return the cost of producing a region (specified by 'bounds') of a function stage (specified by 'func...
std::map< std::string, Expr > stage_detailed_load_costs(const std::string &func, int stage, DimBounds &bounds, const std::set< std::string > &inlines=std::set< std::string >())
Computes the memory costs of computing a region (specified by 'bounds') of a function stage (specifie...
std::map< std::string, Function > env
An environment map which contains all functions in the pipeline.
std::vector< Cost > get_func_cost(const Function &f, const std::set< std::string > &inlines=std::set< std::string >())
Compute the cost of producing a single value by all stages of 'f'.
std::map< std::string, Type > inputs
A map containing the types of all image inputs in the pipeline.
RegionCosts(const std::map< std::string, Function > &env, const std::vector< std::string > &order)
Construct a region cost object for the pipeline.
Cost stage_region_cost(const std::string &func, int stage, const Box ®ion, const std::set< std::string > &inlines=std::set< std::string >())
Return the cost of producing a region of a function stage (specified by 'func' and 'stage').
Expr input_region_size(const std::string &input, const Box ®ion)
Return the size of the input region in bytes.
Cost get_func_stage_cost(const Function &f, int stage, const std::set< std::string > &inlines=std::set< std::string >()) const
Compute the cost of producing a single value by one stage of 'f'.
Expr input_region_size(const std::map< std::string, Box > &input_regions)
Return the total size of the many input regions in bytes.
std::map< std::string, Expr > stage_detailed_load_costs(const std::string &func, int stage, const std::set< std::string > &inlines=std::set< std::string >())
Return a map containing the costs incurred to access each of the functions required to produce a sing...
std::map< std::string, std::vector< Cost > > func_cost
A map containing the cost of computing a value in each stage of a function.