|
Halide 20.0.0
Halide compiler and libraries
|
#include <State.h>
Classes | |
| struct | FeatureLoopNestMutator |
Public Member Functions | |
| State ()=default | |
| State (const State &)=delete | |
| State (State &&)=delete | |
| void | operator= (const State &)=delete |
| void | operator= (State &&)=delete |
| uint64_t | structural_hash (int depth) const |
| void | compute_featurization (const FunctionDAG &dag, const Adams2019Params ¶ms, StageMap< ScheduleFeatures > *features, const CachingOptions &cache_options) |
| void | save_featurization (const FunctionDAG &dag, const Adams2019Params ¶ms, const CachingOptions &cache_options, std::ostream &out) |
| bool | calculate_cost (const FunctionDAG &dag, const Adams2019Params ¶ms, CostModel *cost_model, const CachingOptions &cache_options, int verbosity=99) |
| IntrusivePtr< State > | make_child () const |
| void | generate_children (const FunctionDAG &dag, const Adams2019Params ¶ms, CostModel *cost_model, std::function< void(IntrusivePtr< State > &&)> &accept_child, Cache *cache) const |
| void | dump (std::ostream &os) const |
| void | apply_schedule (const FunctionDAG &dag, const Adams2019Params ¶ms) |
| State ()=default | |
| State (const State &)=delete | |
| State (State &&)=delete | |
| void | operator= (const State &)=delete |
| void | operator= (State &&)=delete |
| uint64_t | structural_hash (int depth) const |
| void | compute_loop_nest_parents (LoopNestMap &p, const LoopNest *here, int depth) const |
| const LoopNest * | deepest_common_ancestor (const LoopNestMap &parent, const LoopNest *a, const LoopNest *b) const |
| template<typename PostCreateMutator > | |
| LoopNest * | create_feature_root (const PostCreateMutator &post_create_mutator) const |
| bool | has_loop_nest_without_thread_loops () const |
| bool | has_compute_root_loops_without_blocks () const |
| IntrusivePtr< const LoopNest > | get_root_for_features (const Anderson2021Params ¶ms, const Target &target) const |
| void | set_gpu_store_site (const LoopNestMap &parent, const LoopNest *loop, LoopNest::Sites &site) const |
| bool | compute_featurization (const FunctionDAG &dag, const Anderson2021Params ¶ms, const Target &target, StageMap< ScheduleFeatures > *features, Statistics &stats, bool verbose=false) const |
| void | save_featurization (const FunctionDAG &dag, const Anderson2021Params ¶ms, const Target &target, std::ostream &out) const |
| bool | contains_store_at (const set< const FunctionDAG::Node * > &outermost_store_at, const IntrusivePtr< const LoopNest > &parent) const |
| bool | contains_store_at_further_in_than_outermost () const |
| bool | has_dynamic_allocation_inside_thread () const |
| bool | exceeds_serial_extents_limit (const Target &target) const |
| int64_t | get_shared_mem_alloc_size (const LoopNest *block, const LoopNest *loop) const |
| bool | exceeds_shared_memory_limit (const Anderson2021Params ¶ms, const Target &target) const |
| bool | exceeds_local_memory_limit (const Anderson2021Params ¶ms, const Target &target) const |
| bool | calculate_cost (const FunctionDAG &dag, const Anderson2021Params ¶ms, const Target &target, CostModel *cost_model, Statistics &stats, bool verbose=false) |
| IntrusivePtr< State > | make_child () const |
| void | dump () const |
| void | print_compute_locations () const |
| void | fuse_gpu_blocks (LoopNest::StageScheduleState *state, Stage &stage, const vector< VarOrRVar > ¶llel_vars, const vector< int64_t > ¶llel_extents, const vector< int > &constant_extents) const |
| void | mark_gpu_blocks (LoopNest::StageScheduleState *state, Stage &stage, const vector< VarOrRVar > ¶llel_vars, const vector< int64_t > ¶llel_extents) const |
| bool | mark_gpu_threads (LoopNest::StageScheduleState *state, Stage &stage, std::unordered_set< std::string > &new_serial_vars, std::ostringstream &staged_funcs_schedule_source) const |
| bool | can_fuse_gpu (const vector< int64_t > ¶llel_extents) const |
| void | apply_schedule (const FunctionDAG &dag, const Anderson2021Params ¶ms, const Target &target) |
| bool | should_always_consider_inline (const FunctionDAG::Node *node) const |
| void | add_to_always_consider_inline_options (const FunctionDAG::Node *node) |
| void | update_always_consider_inline_options (const FunctionDAG::Node *node) |
| const LoopNest * | deepest_valid_compute_location (const Anderson2021Params ¶ms, const LoopNestMap &parent, const FunctionDAG::Node &node, const LoopNest *loop, const LoopNest *root, StageMap< int64_t > &total_shared_mem_alloc_sizes) const |
| int64_t | total_loop_extents_of_ancestors (const LoopNestMap &parent, const LoopNest *loop) const |
Public Attributes | |
| RefCount | ref_count |
| IntrusivePtr< const LoopNest > | root |
| IntrusivePtr< const State > | parent |
| double | cost = 0 |
| int | num_decisions_made = 0 |
| bool | penalized = false |
| string | schedule_source |
| std::vector< double > | cost_per_stage |
| NodeMap< bool > | always_consider_inline |
Static Public Attributes | |
| static int | cost_calculations |
|
default |
|
delete |
|
delete |
|
default |
|
delete |
|
delete |
|
delete |
|
delete |
| uint64_t Halide::Internal::Autoscheduler::State::structural_hash | ( | int | depth | ) | const |
| void Halide::Internal::Autoscheduler::State::compute_featurization | ( | const FunctionDAG & | dag, |
| const Adams2019Params & | params, | ||
| StageMap< ScheduleFeatures > * | features, | ||
| const CachingOptions & | cache_options | ||
| ) |
| void Halide::Internal::Autoscheduler::State::save_featurization | ( | const FunctionDAG & | dag, |
| const Adams2019Params & | params, | ||
| const CachingOptions & | cache_options, | ||
| std::ostream & | out | ||
| ) |
| bool Halide::Internal::Autoscheduler::State::calculate_cost | ( | const FunctionDAG & | dag, |
| const Adams2019Params & | params, | ||
| CostModel * | cost_model, | ||
| const CachingOptions & | cache_options, | ||
| int | verbosity = 99 |
||
| ) |
| IntrusivePtr< State > Halide::Internal::Autoscheduler::State::make_child | ( | ) | const |
| void Halide::Internal::Autoscheduler::State::generate_children | ( | const FunctionDAG & | dag, |
| const Adams2019Params & | params, | ||
| CostModel * | cost_model, | ||
| std::function< void(IntrusivePtr< State > &&)> & | accept_child, | ||
| Cache * | cache | ||
| ) | const |
| void Halide::Internal::Autoscheduler::State::dump | ( | std::ostream & | os | ) | const |
| void Halide::Internal::Autoscheduler::State::apply_schedule | ( | const FunctionDAG & | dag, |
| const Adams2019Params & | params | ||
| ) |
|
delete |
|
delete |
| uint64_t Halide::Internal::Autoscheduler::State::structural_hash | ( | int | depth | ) | const |
| void Halide::Internal::Autoscheduler::State::compute_loop_nest_parents | ( | LoopNestMap & | p, |
| const LoopNest * | here, | ||
| int | depth | ||
| ) | const |
| const LoopNest * Halide::Internal::Autoscheduler::State::deepest_common_ancestor | ( | const LoopNestMap & | parent, |
| const LoopNest * | a, | ||
| const LoopNest * | b | ||
| ) | const |
|
inline |
| bool Halide::Internal::Autoscheduler::State::has_loop_nest_without_thread_loops | ( | ) | const |
| bool Halide::Internal::Autoscheduler::State::has_compute_root_loops_without_blocks | ( | ) | const |
| IntrusivePtr< const LoopNest > Halide::Internal::Autoscheduler::State::get_root_for_features | ( | const Anderson2021Params & | params, |
| const Target & | target | ||
| ) | const |
| void Halide::Internal::Autoscheduler::State::set_gpu_store_site | ( | const LoopNestMap & | parent, |
| const LoopNest * | loop, | ||
| LoopNest::Sites & | site | ||
| ) | const |
| bool Halide::Internal::Autoscheduler::State::compute_featurization | ( | const FunctionDAG & | dag, |
| const Anderson2021Params & | params, | ||
| const Target & | target, | ||
| StageMap< ScheduleFeatures > * | features, | ||
| Statistics & | stats, | ||
| bool | verbose = false |
||
| ) | const |
| void Halide::Internal::Autoscheduler::State::save_featurization | ( | const FunctionDAG & | dag, |
| const Anderson2021Params & | params, | ||
| const Target & | target, | ||
| std::ostream & | out | ||
| ) | const |
| bool Halide::Internal::Autoscheduler::State::contains_store_at | ( | const set< const FunctionDAG::Node * > & | outermost_store_at, |
| const IntrusivePtr< const LoopNest > & | parent | ||
| ) | const |
| bool Halide::Internal::Autoscheduler::State::contains_store_at_further_in_than_outermost | ( | ) | const |
| bool Halide::Internal::Autoscheduler::State::has_dynamic_allocation_inside_thread | ( | ) | const |
| bool Halide::Internal::Autoscheduler::State::exceeds_serial_extents_limit | ( | const Target & | target | ) | const |
| int64_t Halide::Internal::Autoscheduler::State::get_shared_mem_alloc_size | ( | const LoopNest * | block, |
| const LoopNest * | loop | ||
| ) | const |
| bool Halide::Internal::Autoscheduler::State::exceeds_shared_memory_limit | ( | const Anderson2021Params & | params, |
| const Target & | target | ||
| ) | const |
| bool Halide::Internal::Autoscheduler::State::exceeds_local_memory_limit | ( | const Anderson2021Params & | params, |
| const Target & | target | ||
| ) | const |
| bool Halide::Internal::Autoscheduler::State::calculate_cost | ( | const FunctionDAG & | dag, |
| const Anderson2021Params & | params, | ||
| const Target & | target, | ||
| CostModel * | cost_model, | ||
| Statistics & | stats, | ||
| bool | verbose = false |
||
| ) |
| IntrusivePtr< State > Halide::Internal::Autoscheduler::State::make_child | ( | ) | const |
| void Halide::Internal::Autoscheduler::State::dump | ( | ) | const |
| void Halide::Internal::Autoscheduler::State::print_compute_locations | ( | ) | const |
| void Halide::Internal::Autoscheduler::State::fuse_gpu_blocks | ( | LoopNest::StageScheduleState * | state, |
| Stage & | stage, | ||
| const vector< VarOrRVar > & | parallel_vars, | ||
| const vector< int64_t > & | parallel_extents, | ||
| const vector< int > & | constant_extents | ||
| ) | const |
| void Halide::Internal::Autoscheduler::State::mark_gpu_blocks | ( | LoopNest::StageScheduleState * | state, |
| Stage & | stage, | ||
| const vector< VarOrRVar > & | parallel_vars, | ||
| const vector< int64_t > & | parallel_extents | ||
| ) | const |
| bool Halide::Internal::Autoscheduler::State::mark_gpu_threads | ( | LoopNest::StageScheduleState * | state, |
| Stage & | stage, | ||
| std::unordered_set< std::string > & | new_serial_vars, | ||
| std::ostringstream & | staged_funcs_schedule_source | ||
| ) | const |
| bool Halide::Internal::Autoscheduler::State::can_fuse_gpu | ( | const vector< int64_t > & | parallel_extents | ) | const |
| void Halide::Internal::Autoscheduler::State::apply_schedule | ( | const FunctionDAG & | dag, |
| const Anderson2021Params & | params, | ||
| const Target & | target | ||
| ) |
| bool Halide::Internal::Autoscheduler::State::should_always_consider_inline | ( | const FunctionDAG::Node * | node | ) | const |
| void Halide::Internal::Autoscheduler::State::add_to_always_consider_inline_options | ( | const FunctionDAG::Node * | node | ) |
| void Halide::Internal::Autoscheduler::State::update_always_consider_inline_options | ( | const FunctionDAG::Node * | node | ) |
| const LoopNest * Halide::Internal::Autoscheduler::State::deepest_valid_compute_location | ( | const Anderson2021Params & | params, |
| const LoopNestMap & | parent, | ||
| const FunctionDAG::Node & | node, | ||
| const LoopNest * | loop, | ||
| const LoopNest * | root, | ||
| StageMap< int64_t > & | total_shared_mem_alloc_sizes | ||
| ) | const |
| int64_t Halide::Internal::Autoscheduler::State::total_loop_extents_of_ancestors | ( | const LoopNestMap & | parent, |
| const LoopNest * | loop | ||
| ) | const |
|
mutable |
| IntrusivePtr< const LoopNest > Halide::Internal::Autoscheduler::State::root |
Definition at line 24 of file State.h.
Referenced by create_feature_root().
| IntrusivePtr< const State > Halide::Internal::Autoscheduler::State::parent |
| int Halide::Internal::Autoscheduler::State::num_decisions_made = 0 |
| bool Halide::Internal::Autoscheduler::State::penalized = false |
| string Halide::Internal::Autoscheduler::State::schedule_source |
|
static |
| std::vector<double> Halide::Internal::Autoscheduler::State::cost_per_stage |
| NodeMap<bool> Halide::Internal::Autoscheduler::State::always_consider_inline |