Halide
12.0.1
Halide compiler and libraries
|
#include <LoopNest.h>
Classes | |
struct | Sites |
struct | StageScheduleState |
Public Member Functions | |
void | copy_from (const LoopNest &n) |
void | structural_hash (uint64_t &h, int depth) const |
size_t | funcs_realized_or_inlined () const |
void | get_sites (StageMap< Sites > &sites, const LoopNest *task=nullptr, const LoopNest *parent=nullptr) const |
void | set_working_set_at_task_feature (int64_t working_set, StageMap< ScheduleFeatures > *features) const |
void | compute_features (const FunctionDAG &dag, const MachineParams ¶ms, const StageMap< Sites > &sites, int64_t instances, int64_t parallelism, const LoopNest *parent, const LoopNest *grandparent, const LoopNest &root, int64_t *working_set, StageMap< ScheduleFeatures > *features, bool use_cached_features) const |
bool | is_root () const |
const Bound & | set_bounds (const FunctionDAG::Node *f, BoundContents *b) const |
const Bound & | get_bounds (const FunctionDAG::Node *f) const |
void | dump (string prefix, const LoopNest *parent) const |
bool | calls (const FunctionDAG::Node *f) const |
int64_t | max_inlined_calls () const |
bool | accesses_input_buffer () const |
bool | computes (const FunctionDAG::Node *f) const |
void | inline_func (const FunctionDAG::Node *f) |
void | compute_here (const FunctionDAG::Node *f, bool tileable, int v) |
IntrusivePtr< const LoopNest > | parallelize_in_tiles (const MachineParams ¶ms, const vector< int64_t > &tiling, const LoopNest *parent) const |
std::vector< IntrusivePtr< const LoopNest > > | compute_in_tiles (const FunctionDAG::Node *f, const LoopNest *parent, const MachineParams ¶ms, int v, bool in_realization) const |
void | apply (LoopLevel here, StageMap< std::unique_ptr< StageScheduleState >> &state_map, double num_cores, int depth, const LoopNest *parent, const LoopNest *compute_site) const |
void | copy_from_including_features (const LoopNest &n) |
void | memoize_points_computed_minimum (StageMap< ScheduleFeatures > &memoized_features, const StageMap< ScheduleFeatures > *features) const |
void | memoize_features (StageMap< ScheduleFeatures > &memoized_features, const StageMap< ScheduleFeatures > *features_to_insert) const |
void | compute_working_set_from_features (int64_t *working_set, const StageMap< ScheduleFeatures > *features) const |
void | recompute_inlined_features (const StageMap< Sites > &sites, StageMap< ScheduleFeatures > *features) const |
uint64_t | compute_hash_of_producers_stored_at_root (const StageMap< Sites > &sites) const |
std::vector< std::pair< int, int > > | collect_producers (const StageMap< Sites > &sites) const |
void | collect_stages (std::set< const FunctionDAG::Node::Stage * > &stages) const |
Static Public Member Functions | |
static void | hash_combine (uint64_t &h, uint64_t next) |
Public Attributes | |
RefCount | ref_count |
std::vector< int64_t > | size |
std::vector< IntrusivePtr< const LoopNest > > | children |
NodeMap< int64_t > | inlined |
std::set< const FunctionDAG::Node * > | store_at |
NodeMap< Bound > | bounds |
const FunctionDAG::Node * | node = nullptr |
const FunctionDAG::Node::Stage * | stage = nullptr |
bool | innermost = false |
bool | tileable = false |
bool | parallel = false |
int | vector_dim = -1 |
int | vectorized_loop_index = -1 |
std::map< uint64_t, StageMap< StageMap< FeatureIntermediates > > > | feature_intermediates_cache |
std::map< uint64_t, StageMap< ScheduleFeatures > > | features_cache |
Definition at line 36 of file LoopNest.h.
void Halide::Internal::Autoscheduler::LoopNest::copy_from | ( | const LoopNest & | n | ) |
|
inlinestatic |
Definition at line 81 of file LoopNest.h.
void Halide::Internal::Autoscheduler::LoopNest::structural_hash | ( | uint64_t & | h, |
int | depth | ||
) | const |
|
inline |
Definition at line 93 of file LoopNest.h.
void Halide::Internal::Autoscheduler::LoopNest::get_sites | ( | StageMap< Sites > & | sites, |
const LoopNest * | task = nullptr , |
||
const LoopNest * | parent = nullptr |
||
) | const |
|
inline |
Definition at line 122 of file LoopNest.h.
References children, and PerfectHashMap< K, T, max_small_size, phm_assert >::get().
void Halide::Internal::Autoscheduler::LoopNest::compute_features | ( | const FunctionDAG & | dag, |
const MachineParams & | params, | ||
const StageMap< Sites > & | sites, | ||
int64_t | instances, | ||
int64_t | parallelism, | ||
const LoopNest * | parent, | ||
const LoopNest * | grandparent, | ||
const LoopNest & | root, | ||
int64_t * | working_set, | ||
StageMap< ScheduleFeatures > * | features, | ||
bool | use_cached_features | ||
) | const |
|
inline |
Definition at line 143 of file LoopNest.h.
References node.
|
inline |
Definition at line 150 of file LoopNest.h.
References bounds.
const Bound& Halide::Internal::Autoscheduler::LoopNest::get_bounds | ( | const FunctionDAG::Node * | f | ) | const |
void Halide::Internal::Autoscheduler::LoopNest::dump | ( | string | prefix, |
const LoopNest * | parent | ||
) | const |
bool Halide::Internal::Autoscheduler::LoopNest::calls | ( | const FunctionDAG::Node * | f | ) | const |
int64_t Halide::Internal::Autoscheduler::LoopNest::max_inlined_calls | ( | ) | const |
bool Halide::Internal::Autoscheduler::LoopNest::accesses_input_buffer | ( | ) | const |
bool Halide::Internal::Autoscheduler::LoopNest::computes | ( | const FunctionDAG::Node * | f | ) | const |
void Halide::Internal::Autoscheduler::LoopNest::inline_func | ( | const FunctionDAG::Node * | f | ) |
void Halide::Internal::Autoscheduler::LoopNest::compute_here | ( | const FunctionDAG::Node * | f, |
bool | tileable, | ||
int | v | ||
) |
IntrusivePtr<const LoopNest> Halide::Internal::Autoscheduler::LoopNest::parallelize_in_tiles | ( | const MachineParams & | params, |
const vector< int64_t > & | tiling, | ||
const LoopNest * | parent | ||
) | const |
std::vector<IntrusivePtr<const LoopNest> > Halide::Internal::Autoscheduler::LoopNest::compute_in_tiles | ( | const FunctionDAG::Node * | f, |
const LoopNest * | parent, | ||
const MachineParams & | params, | ||
int | v, | ||
bool | in_realization | ||
) | const |
void Halide::Internal::Autoscheduler::LoopNest::apply | ( | LoopLevel | here, |
StageMap< std::unique_ptr< StageScheduleState >> & | state_map, | ||
double | num_cores, | ||
int | depth, | ||
const LoopNest * | parent, | ||
const LoopNest * | compute_site | ||
) | const |
void Halide::Internal::Autoscheduler::LoopNest::copy_from_including_features | ( | const LoopNest & | n | ) |
void Halide::Internal::Autoscheduler::LoopNest::memoize_points_computed_minimum | ( | StageMap< ScheduleFeatures > & | memoized_features, |
const StageMap< ScheduleFeatures > * | features | ||
) | const |
void Halide::Internal::Autoscheduler::LoopNest::memoize_features | ( | StageMap< ScheduleFeatures > & | memoized_features, |
const StageMap< ScheduleFeatures > * | features_to_insert | ||
) | const |
void Halide::Internal::Autoscheduler::LoopNest::compute_working_set_from_features | ( | int64_t * | working_set, |
const StageMap< ScheduleFeatures > * | features | ||
) | const |
void Halide::Internal::Autoscheduler::LoopNest::recompute_inlined_features | ( | const StageMap< Sites > & | sites, |
StageMap< ScheduleFeatures > * | features | ||
) | const |
uint64_t Halide::Internal::Autoscheduler::LoopNest::compute_hash_of_producers_stored_at_root | ( | const StageMap< Sites > & | sites | ) | const |
std::vector<std::pair<int, int> > Halide::Internal::Autoscheduler::LoopNest::collect_producers | ( | const StageMap< Sites > & | sites | ) | const |
void Halide::Internal::Autoscheduler::LoopNest::collect_stages | ( | std::set< const FunctionDAG::Node::Stage * > & | stages | ) | const |
|
mutable |
Definition at line 37 of file LoopNest.h.
std::vector<int64_t> Halide::Internal::Autoscheduler::LoopNest::size |
Definition at line 41 of file LoopNest.h.
std::vector<IntrusivePtr<const LoopNest> > Halide::Internal::Autoscheduler::LoopNest::children |
Definition at line 44 of file LoopNest.h.
Referenced by funcs_realized_or_inlined(), and set_working_set_at_task_feature().
Definition at line 48 of file LoopNest.h.
Referenced by funcs_realized_or_inlined().
std::set<const FunctionDAG::Node *> Halide::Internal::Autoscheduler::LoopNest::store_at |
Definition at line 51 of file LoopNest.h.
Referenced by funcs_realized_or_inlined().
Definition at line 56 of file LoopNest.h.
Referenced by set_bounds().
const FunctionDAG::Node* Halide::Internal::Autoscheduler::LoopNest::node = nullptr |
Definition at line 59 of file LoopNest.h.
Referenced by is_root().
const FunctionDAG::Node::Stage* Halide::Internal::Autoscheduler::LoopNest::stage = nullptr |
Definition at line 62 of file LoopNest.h.
bool Halide::Internal::Autoscheduler::LoopNest::innermost = false |
Definition at line 65 of file LoopNest.h.
bool Halide::Internal::Autoscheduler::LoopNest::tileable = false |
Definition at line 68 of file LoopNest.h.
bool Halide::Internal::Autoscheduler::LoopNest::parallel = false |
Definition at line 71 of file LoopNest.h.
int Halide::Internal::Autoscheduler::LoopNest::vector_dim = -1 |
Definition at line 74 of file LoopNest.h.
int Halide::Internal::Autoscheduler::LoopNest::vectorized_loop_index = -1 |
Definition at line 77 of file LoopNest.h.
|
mutable |
Definition at line 267 of file LoopNest.h.
|
mutable |
Definition at line 269 of file LoopNest.h.