Halide
Halide::Internal::Autoscheduler::SearchSpace Struct Reference

#include <SearchSpace.h>

Classes

struct  ParallelTileOption
 

Public Types

using StateVector = std::vector< IntrusivePtr< State > >
 

Public Member Functions

 SearchSpace (const FunctionDAG &dag, const Anderson2021Params &params, const Target &target, std::mt19937 &rng, CostModel *cost_model, Statistics &stats, const LoopNestParser *partial_schedule)
 
vector< ParallelTileOptionfilter_parallel_tile_options (const IntrusivePtr< State > &state, const FunctionDAG::Node *node, vector< vector< int64_t >> &inner_tilings, const vector< int64_t > &pure_size) const
 
vector< ThreadTileOptionfilter_thread_tile_options (vector< IntrusivePtr< const LoopNest >> &loop_nests) const
 
void memoize_blocks (const FunctionDAG::Node *node, LoopNest *new_root)
 
bool add_states_from_memoized_blocks (const IntrusivePtr< State > &state, std::function< void(IntrusivePtr< State > &&)> &accept_child, const FunctionDAG::Node *node, int &num_children) const
 
void generate_children (const IntrusivePtr< State > &state, std::function< void(IntrusivePtr< State > &&)> &accept_child, int pass_idx, bool is_pre_pass)
 
void freeze_lowest_cost_stages (const IntrusivePtr< State > &best)
 
vector< vector< int64_t > > generate_compute_root_serial_tilings (const IntrusivePtr< const LoopNest > &pure_stage, const FunctionDAG::Node *node) const
 
bool add_child (const IntrusivePtr< State > &state, const IntrusivePtr< const LoopNest > &new_root, std::function< void(IntrusivePtr< State > &&)> &accept_child) const
 
void process_pending_states (std::unordered_map< uint64_t, StateVector > &primary_options, std::unordered_map< uint64_t, StateVector > &secondary_options, int &num_children, std::function< void(IntrusivePtr< State > &&)> &accept_child, const FunctionDAG::Node *node)
 
bool is_in_partial_schedule (const FunctionDAG::Node *node) const
 

Public Attributes

const FunctionDAGdag
 
const Anderson2021Paramsparams
 
const Targettarget
 
SearchSpaceOptions search_space_options
 
std::mt19937 & rng
 
CostModelcost_model
 
Statisticsstats
 
const LoopNestParserpartial_schedule
 
NodeMap< bool > inlined_nodes
 
NodeMap< std::vector< IntrusivePtr< const LoopNest > > > compute_root_nodes
 
NodeMap< std::map< int, std::vector< IntrusivePtr< const LoopNest > > > > memoized_compute_root_blocks
 

Detailed Description

Definition at line 23 of file SearchSpace.h.

Member Typedef Documentation

◆ StateVector

Constructor & Destructor Documentation

◆ SearchSpace()

Halide::Internal::Autoscheduler::SearchSpace::SearchSpace ( const FunctionDAG dag,
const Anderson2021Params params,
const Target target,
std::mt19937 &  rng,
CostModel cost_model,
Statistics stats,
const LoopNestParser partial_schedule 
)

Member Function Documentation

◆ filter_parallel_tile_options()

vector<ParallelTileOption> Halide::Internal::Autoscheduler::SearchSpace::filter_parallel_tile_options ( const IntrusivePtr< State > &  state,
const FunctionDAG::Node node,
vector< vector< int64_t >> &  inner_tilings,
const vector< int64_t > &  pure_size 
) const

◆ filter_thread_tile_options()

vector<ThreadTileOption> Halide::Internal::Autoscheduler::SearchSpace::filter_thread_tile_options ( vector< IntrusivePtr< const LoopNest >> &  loop_nests) const

◆ memoize_blocks()

void Halide::Internal::Autoscheduler::SearchSpace::memoize_blocks ( const FunctionDAG::Node node,
LoopNest new_root 
)

◆ add_states_from_memoized_blocks()

bool Halide::Internal::Autoscheduler::SearchSpace::add_states_from_memoized_blocks ( const IntrusivePtr< State > &  state,
std::function< void(IntrusivePtr< State > &&)> &  accept_child,
const FunctionDAG::Node node,
int &  num_children 
) const

◆ generate_children()

void Halide::Internal::Autoscheduler::SearchSpace::generate_children ( const IntrusivePtr< State > &  state,
std::function< void(IntrusivePtr< State > &&)> &  accept_child,
int  pass_idx,
bool  is_pre_pass 
)

◆ freeze_lowest_cost_stages()

void Halide::Internal::Autoscheduler::SearchSpace::freeze_lowest_cost_stages ( const IntrusivePtr< State > &  best)

◆ generate_compute_root_serial_tilings()

vector<vector<int64_t> > Halide::Internal::Autoscheduler::SearchSpace::generate_compute_root_serial_tilings ( const IntrusivePtr< const LoopNest > &  pure_stage,
const FunctionDAG::Node node 
) const

◆ add_child()

bool Halide::Internal::Autoscheduler::SearchSpace::add_child ( const IntrusivePtr< State > &  state,
const IntrusivePtr< const LoopNest > &  new_root,
std::function< void(IntrusivePtr< State > &&)> &  accept_child 
) const

◆ process_pending_states()

void Halide::Internal::Autoscheduler::SearchSpace::process_pending_states ( std::unordered_map< uint64_t, StateVector > &  primary_options,
std::unordered_map< uint64_t, StateVector > &  secondary_options,
int &  num_children,
std::function< void(IntrusivePtr< State > &&)> &  accept_child,
const FunctionDAG::Node node 
)

◆ is_in_partial_schedule()

bool Halide::Internal::Autoscheduler::SearchSpace::is_in_partial_schedule ( const FunctionDAG::Node node) const

Member Data Documentation

◆ dag

const FunctionDAG& Halide::Internal::Autoscheduler::SearchSpace::dag

Definition at line 25 of file SearchSpace.h.

◆ params

const Anderson2021Params& Halide::Internal::Autoscheduler::SearchSpace::params

Definition at line 26 of file SearchSpace.h.

◆ target

const Target& Halide::Internal::Autoscheduler::SearchSpace::target

Definition at line 27 of file SearchSpace.h.

◆ search_space_options

SearchSpaceOptions Halide::Internal::Autoscheduler::SearchSpace::search_space_options

Definition at line 28 of file SearchSpace.h.

◆ rng

std::mt19937& Halide::Internal::Autoscheduler::SearchSpace::rng

Definition at line 29 of file SearchSpace.h.

◆ cost_model

CostModel* Halide::Internal::Autoscheduler::SearchSpace::cost_model

Definition at line 30 of file SearchSpace.h.

◆ stats

Statistics& Halide::Internal::Autoscheduler::SearchSpace::stats

Definition at line 31 of file SearchSpace.h.

◆ partial_schedule

const LoopNestParser* Halide::Internal::Autoscheduler::SearchSpace::partial_schedule

Definition at line 32 of file SearchSpace.h.

◆ inlined_nodes

NodeMap<bool> Halide::Internal::Autoscheduler::SearchSpace::inlined_nodes

Definition at line 34 of file SearchSpace.h.

◆ compute_root_nodes

NodeMap<std::vector<IntrusivePtr<const LoopNest> > > Halide::Internal::Autoscheduler::SearchSpace::compute_root_nodes

Definition at line 35 of file SearchSpace.h.

◆ memoized_compute_root_blocks

NodeMap<std::map<int, std::vector<IntrusivePtr<const LoopNest> > > > Halide::Internal::Autoscheduler::SearchSpace::memoized_compute_root_blocks

Definition at line 36 of file SearchSpace.h.


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