Halide 19.0.0
Halide compiler and libraries
|
A schedule for a Function of a Halide pipeline. More...
#include <Schedule.h>
Public Member Functions | |
FuncSchedule (IntrusivePtr< FuncScheduleContents > c) | |
FuncSchedule (const FuncSchedule &other)=default | |
FuncSchedule () | |
FuncSchedule | deep_copy (std::map< FunctionPtr, FunctionPtr > &copied_map) const |
Return a deep copy of this FuncSchedule. | |
bool & | memoized () |
This flag is set to true if the schedule is memoized. | |
bool | memoized () const |
Expr & | memoize_eviction_key () |
This flag is set to true if the schedule is memoized and has an attached eviction key. | |
Expr | memoize_eviction_key () const |
bool & | async () |
Is the production of this Function done asynchronously. | |
bool | async () const |
Expr & | ring_buffer () |
Expr & | ring_buffer () const |
const std::vector< StorageDim > & | storage_dims () const |
The list and order of dimensions used to store this function. | |
std::vector< StorageDim > & | storage_dims () |
MemoryType | memory_type () const |
The memory type (heap/stack/shared/etc) used to back this Func. | |
MemoryType & | memory_type () |
const std::vector< Bound > & | bounds () const |
You may explicitly bound some of the dimensions of a function, or constrain them to lie on multiples of a given factor. | |
std::vector< Bound > & | bounds () |
const std::vector< Bound > & | estimates () const |
You may explicitly specify an estimate of some of the function dimensions. | |
std::vector< Bound > & | estimates () |
const std::map< std::string, Internal::FunctionPtr > & | wrappers () const |
Mark calls of a function by 'f' to be replaced with its identity wrapper or clone during the lowering stage. | |
std::map< std::string, Internal::FunctionPtr > & | wrappers () |
void | add_wrapper (const std::string &f, const Internal::FunctionPtr &wrapper) |
const LoopLevel & | store_level () const |
At what sites should we inject the allocation and the computation of this function? The store_level must be outside of or equal to the compute_level. | |
const LoopLevel & | compute_level () const |
const LoopLevel & | hoist_storage_level () const |
LoopLevel & | store_level () |
LoopLevel & | compute_level () |
LoopLevel & | hoist_storage_level () |
void | accept (IRVisitor *) const |
Pass an IRVisitor through to all Exprs referenced in the Schedule. | |
void | mutate (IRMutator *) |
Pass an IRMutator through to all Exprs referenced in the Schedule. | |
A schedule for a Function of a Halide pipeline.
This schedule is applied to all stages of the Function. Right now this interface is basically a struct, offering mutable access to its innards. In the future it may become more encapsulated.
Definition at line 577 of file Schedule.h.
|
inline |
Definition at line 581 of file Schedule.h.
|
default |
Halide::Internal::FuncSchedule::FuncSchedule | ( | ) |
FuncSchedule Halide::Internal::FuncSchedule::deep_copy | ( | std::map< FunctionPtr, FunctionPtr > & | copied_map | ) | const |
Return a deep copy of this FuncSchedule.
It recursively deep copies all called functions, schedules, specializations, and reduction domains. This method takes a map of <old FunctionContents, deep-copied version> as input and would use the deep-copied FunctionContents from the map if exists instead of creating a new deep-copy to avoid creating deep-copies of the same FunctionContents multiple times.
bool & Halide::Internal::FuncSchedule::memoized | ( | ) |
This flag is set to true if the schedule is memoized.
bool Halide::Internal::FuncSchedule::memoized | ( | ) | const |
Expr & Halide::Internal::FuncSchedule::memoize_eviction_key | ( | ) |
This flag is set to true if the schedule is memoized and has an attached eviction key.
Expr Halide::Internal::FuncSchedule::memoize_eviction_key | ( | ) | const |
bool & Halide::Internal::FuncSchedule::async | ( | ) |
Is the production of this Function done asynchronously.
bool Halide::Internal::FuncSchedule::async | ( | ) | const |
Expr & Halide::Internal::FuncSchedule::ring_buffer | ( | ) |
Expr & Halide::Internal::FuncSchedule::ring_buffer | ( | ) | const |
const std::vector< StorageDim > & Halide::Internal::FuncSchedule::storage_dims | ( | ) | const |
The list and order of dimensions used to store this function.
The first dimension in the vector corresponds to the innermost dimension for storage (i.e. which dimension is tightly packed in memory)
std::vector< StorageDim > & Halide::Internal::FuncSchedule::storage_dims | ( | ) |
MemoryType Halide::Internal::FuncSchedule::memory_type | ( | ) | const |
The memory type (heap/stack/shared/etc) used to back this Func.
MemoryType & Halide::Internal::FuncSchedule::memory_type | ( | ) |
const std::vector< Bound > & Halide::Internal::FuncSchedule::bounds | ( | ) | const |
You may explicitly bound some of the dimensions of a function, or constrain them to lie on multiples of a given factor.
See Func::bound and Func::align_bounds and Func::align_extent.
std::vector< Bound > & Halide::Internal::FuncSchedule::bounds | ( | ) |
const std::vector< Bound > & Halide::Internal::FuncSchedule::estimates | ( | ) | const |
You may explicitly specify an estimate of some of the function dimensions.
std::vector< Bound > & Halide::Internal::FuncSchedule::estimates | ( | ) |
const std::map< std::string, Internal::FunctionPtr > & Halide::Internal::FuncSchedule::wrappers | ( | ) | const |
Mark calls of a function by 'f' to be replaced with its identity wrapper or clone during the lowering stage.
If the string 'f' is empty, it means replace all calls to the function by all other functions (excluding itself) in the pipeline with the global identity wrapper. See Func::in and Func::clone_in for more details.
std::map< std::string, Internal::FunctionPtr > & Halide::Internal::FuncSchedule::wrappers | ( | ) |
void Halide::Internal::FuncSchedule::add_wrapper | ( | const std::string & | f, |
const Internal::FunctionPtr & | wrapper ) |
const LoopLevel & Halide::Internal::FuncSchedule::store_level | ( | ) | const |
At what sites should we inject the allocation and the computation of this function? The store_level must be outside of or equal to the compute_level.
If the compute_level is inline, the store_level is meaningless. See Func::store_at and Func::compute_at
const LoopLevel & Halide::Internal::FuncSchedule::compute_level | ( | ) | const |
const LoopLevel & Halide::Internal::FuncSchedule::hoist_storage_level | ( | ) | const |
LoopLevel & Halide::Internal::FuncSchedule::store_level | ( | ) |
LoopLevel & Halide::Internal::FuncSchedule::compute_level | ( | ) |
LoopLevel & Halide::Internal::FuncSchedule::hoist_storage_level | ( | ) |
void Halide::Internal::FuncSchedule::accept | ( | IRVisitor * | ) | const |
Pass an IRVisitor through to all Exprs referenced in the Schedule.
void Halide::Internal::FuncSchedule::mutate | ( | IRMutator * | ) |
Pass an IRMutator through to all Exprs referenced in the Schedule.