Halide
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) 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
 

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
 

Detailed Description

Definition at line 34 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 79 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 91 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 
) const

◆ is_root()

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

Definition at line 137 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 144 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

Member Data Documentation

◆ ref_count

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

Definition at line 35 of file LoopNest.h.

◆ size

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

Definition at line 39 of file LoopNest.h.

◆ children

std::vector<IntrusivePtr<const LoopNest> > Halide::Internal::Autoscheduler::LoopNest::children

Definition at line 42 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 46 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 49 of file LoopNest.h.

Referenced by funcs_realized_or_inlined().

◆ bounds

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

Definition at line 54 of file LoopNest.h.

Referenced by set_bounds().

◆ node

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

Definition at line 57 of file LoopNest.h.

Referenced by is_root().

◆ stage

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

Definition at line 60 of file LoopNest.h.

◆ innermost

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

Definition at line 63 of file LoopNest.h.

◆ tileable

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

Definition at line 66 of file LoopNest.h.

◆ parallel

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

Definition at line 69 of file LoopNest.h.

◆ vector_dim

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

Definition at line 72 of file LoopNest.h.

◆ vectorized_loop_index

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

Definition at line 75 of file LoopNest.h.


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