Halide  12.0.1
Halide compiler and libraries
Halide::Internal::Autoscheduler::LoopNest Struct Reference

#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 &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
 
bool is_root () const
 
const Boundset_bounds (const FunctionDAG::Node *f, BoundContents *b) const
 
const Boundget_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 LoopNestparallelize_in_tiles (const MachineParams &params, 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 &params, 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_tsize
 
std::vector< IntrusivePtr< const LoopNest > > children
 
NodeMap< int64_tinlined
 
std::set< const FunctionDAG::Node * > store_at
 
NodeMap< Boundbounds
 
const FunctionDAG::Nodenode = nullptr
 
const FunctionDAG::Node::Stagestage = 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
 

Detailed Description

Definition at line 36 of file LoopNest.h.

Member Function Documentation

◆ copy_from()

void Halide::Internal::Autoscheduler::LoopNest::copy_from ( const LoopNest n)

◆ hash_combine()

static void Halide::Internal::Autoscheduler::LoopNest::hash_combine ( uint64_t h,
uint64_t  next 
)
inlinestatic

Definition at line 81 of file LoopNest.h.

◆ structural_hash()

void Halide::Internal::Autoscheduler::LoopNest::structural_hash ( uint64_t h,
int  depth 
) const

◆ funcs_realized_or_inlined()

size_t Halide::Internal::Autoscheduler::LoopNest::funcs_realized_or_inlined ( ) const
inline

Definition at line 93 of file LoopNest.h.

References children, inlined, and store_at.

◆ get_sites()

void Halide::Internal::Autoscheduler::LoopNest::get_sites ( StageMap< Sites > &  sites,
const LoopNest task = nullptr,
const LoopNest parent = nullptr 
) const

◆ set_working_set_at_task_feature()

void Halide::Internal::Autoscheduler::LoopNest::set_working_set_at_task_feature ( int64_t  working_set,
StageMap< ScheduleFeatures > *  features 
) const
inline

◆ compute_features()

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

◆ is_root()

bool Halide::Internal::Autoscheduler::LoopNest::is_root ( ) const
inline

Definition at line 143 of file LoopNest.h.

References node.

◆ set_bounds()

const Bound& Halide::Internal::Autoscheduler::LoopNest::set_bounds ( const FunctionDAG::Node f,
BoundContents b 
) const
inline

Definition at line 150 of file LoopNest.h.

References bounds.

◆ get_bounds()

const Bound& Halide::Internal::Autoscheduler::LoopNest::get_bounds ( const FunctionDAG::Node f) const

◆ dump()

void Halide::Internal::Autoscheduler::LoopNest::dump ( string  prefix,
const LoopNest parent 
) const

◆ calls()

bool Halide::Internal::Autoscheduler::LoopNest::calls ( const FunctionDAG::Node f) const

◆ max_inlined_calls()

int64_t Halide::Internal::Autoscheduler::LoopNest::max_inlined_calls ( ) const

◆ accesses_input_buffer()

bool Halide::Internal::Autoscheduler::LoopNest::accesses_input_buffer ( ) const

◆ computes()

bool Halide::Internal::Autoscheduler::LoopNest::computes ( const FunctionDAG::Node f) const

◆ inline_func()

void Halide::Internal::Autoscheduler::LoopNest::inline_func ( const FunctionDAG::Node f)

◆ compute_here()

void Halide::Internal::Autoscheduler::LoopNest::compute_here ( const FunctionDAG::Node f,
bool  tileable,
int  v 
)

◆ parallelize_in_tiles()

IntrusivePtr<const LoopNest> Halide::Internal::Autoscheduler::LoopNest::parallelize_in_tiles ( const MachineParams params,
const vector< int64_t > &  tiling,
const LoopNest parent 
) const

◆ compute_in_tiles()

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

◆ apply()

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

◆ copy_from_including_features()

void Halide::Internal::Autoscheduler::LoopNest::copy_from_including_features ( const LoopNest n)

◆ memoize_points_computed_minimum()

void Halide::Internal::Autoscheduler::LoopNest::memoize_points_computed_minimum ( StageMap< ScheduleFeatures > &  memoized_features,
const StageMap< ScheduleFeatures > *  features 
) const

◆ memoize_features()

void Halide::Internal::Autoscheduler::LoopNest::memoize_features ( StageMap< ScheduleFeatures > &  memoized_features,
const StageMap< ScheduleFeatures > *  features_to_insert 
) const

◆ compute_working_set_from_features()

void Halide::Internal::Autoscheduler::LoopNest::compute_working_set_from_features ( int64_t working_set,
const StageMap< ScheduleFeatures > *  features 
) const

◆ recompute_inlined_features()

void Halide::Internal::Autoscheduler::LoopNest::recompute_inlined_features ( const StageMap< Sites > &  sites,
StageMap< ScheduleFeatures > *  features 
) const

◆ compute_hash_of_producers_stored_at_root()

uint64_t Halide::Internal::Autoscheduler::LoopNest::compute_hash_of_producers_stored_at_root ( const StageMap< Sites > &  sites) const

◆ collect_producers()

std::vector<std::pair<int, int> > Halide::Internal::Autoscheduler::LoopNest::collect_producers ( const StageMap< Sites > &  sites) const

◆ collect_stages()

void Halide::Internal::Autoscheduler::LoopNest::collect_stages ( std::set< const FunctionDAG::Node::Stage * > &  stages) const

Member Data Documentation

◆ ref_count

RefCount Halide::Internal::Autoscheduler::LoopNest::ref_count
mutable

Definition at line 37 of file LoopNest.h.

◆ size

std::vector<int64_t> Halide::Internal::Autoscheduler::LoopNest::size

Definition at line 41 of file LoopNest.h.

◆ children

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().

◆ inlined

NodeMap<int64_t> Halide::Internal::Autoscheduler::LoopNest::inlined

Definition at line 48 of file LoopNest.h.

Referenced by funcs_realized_or_inlined().

◆ store_at

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().

◆ bounds

NodeMap<Bound> Halide::Internal::Autoscheduler::LoopNest::bounds
mutable

Definition at line 56 of file LoopNest.h.

Referenced by set_bounds().

◆ node

const FunctionDAG::Node* Halide::Internal::Autoscheduler::LoopNest::node = nullptr

Definition at line 59 of file LoopNest.h.

Referenced by is_root().

◆ stage

const FunctionDAG::Node::Stage* Halide::Internal::Autoscheduler::LoopNest::stage = nullptr

Definition at line 62 of file LoopNest.h.

◆ innermost

bool Halide::Internal::Autoscheduler::LoopNest::innermost = false

Definition at line 65 of file LoopNest.h.

◆ tileable

bool Halide::Internal::Autoscheduler::LoopNest::tileable = false

Definition at line 68 of file LoopNest.h.

◆ parallel

bool Halide::Internal::Autoscheduler::LoopNest::parallel = false

Definition at line 71 of file LoopNest.h.

◆ vector_dim

int Halide::Internal::Autoscheduler::LoopNest::vector_dim = -1

Definition at line 74 of file LoopNest.h.

◆ vectorized_loop_index

int Halide::Internal::Autoscheduler::LoopNest::vectorized_loop_index = -1

Definition at line 77 of file LoopNest.h.

◆ feature_intermediates_cache

std::map<uint64_t, StageMap<StageMap<FeatureIntermediates> > > Halide::Internal::Autoscheduler::LoopNest::feature_intermediates_cache
mutable

Definition at line 267 of file LoopNest.h.

◆ features_cache

std::map<uint64_t, StageMap<ScheduleFeatures> > Halide::Internal::Autoscheduler::LoopNest::features_cache
mutable

Definition at line 269 of file LoopNest.h.


The documentation for this struct was generated from the following file: