Internal::StageSchedule#
-
class StageSchedule#
A schedule for a single stage of a Halide pipeline.
Right now this interface is basically a struct, offering mutable access to its innards. In the future it may become more encapsulated.
Public Functions
-
StageSchedule get_copy() const#
Return a copy of this StageSchedule.
-
bool &touched()#
This flag is set to true if the dims list has been manipulated by the user (or if a ScheduleHandle was created that could have been used to manipulate it).
It controls the warning that occurs if you schedule the vars of the pure step but not the update steps.
-
const std::vector<ReductionVariable> &rvars() const#
RVars of reduction domain associated with this schedule if there is any.
-
const std::vector<Split> &splits() const#
The traversal of the domain of a function can have some of its dimensions split into sub-dimensions.
See Func::split
-
const std::vector<Dim> &dims() const#
The list and ordering of dimensions used to evaluate this function, after all splits have taken place.
The first dimension in the vector corresponds to the innermost for loop, and the last is the outermost. Also specifies what type of for loop to use for each dimension. Does not specify the bounds on each dimension. These get inferred from how the function is used, what the splits are, and any optional bounds in the list below.
-
const std::vector<PrefetchDirective> &prefetches() const#
You may perform prefetching in some of the dimensions of a function.
See Func::prefetch
-
const FuseLoopLevel &fuse_level() const#
Innermost loop level of fused loop nest for this function stage.
Fusion runs from outermost to this loop level. The stages being fused should not have producer/consumer relationship. See Func::compute_with and Func::compute_with
-
const std::vector<FusedPair> &fused_pairs() const#
List of function stages that are to be fused with this function stage from the outermost loop to a certain loop level.
Those function stages are to be computed AFTER this function stage at the last fused loop level. This list is populated when realization_order() is called. See Func::compute_with
-
bool allow_race_conditions() const#
Are race conditions permitted?
-
bool atomic() const#
Use atomic update?
-
bool override_atomic_associativity_test() const#
Atomic updates are only allowed on associative reductions.
We try to prove the associativity, but the user can override the associativity test and suppress compiler error if the prover fails to recognize the associativity or the user does not care.
-
bool stream_stores() const#
True if stores to this Stage’s backing storage should use non-temporal (streaming) stores.
Only legal on a Stage all of whose RVars (if any) are pure, i.e. already proven safe to parallelize; see Func::stream_stores.
-
const std::optional<std::vector<std::string>> &stream_loads_names() const#
The stream_loads() request (see Func::stream_loads / Stage::stream_loads) for this Stage: nullopt means stream every direct load of another Func (except a self-load), set by the zero-arg form; otherwise the vector names exactly the Funcs whose direct loads by this Stage should be streamed (non-temporal) — an empty vector (the default, if stream_loads() was never called) means don’t stream any of them.
-
void accept(IRVisitor*) const#
Pass an IRVisitor through to all Exprs referenced in the Schedule.
-
StageSchedule get_copy() const#