Halide 22.0.0 Halide compiler and libraries

Classes | Public Types | Public Member Functions | Public Attributes | List of all members
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< ParallelTileOption > | 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
vector< ThreadTileOption > | filter_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 FunctionDAG & | dag
const Anderson2021Params & | params
const Target & | target
SearchSpaceOptions | search_space_options
std::mt19937 & | rng
CostModel * | cost_model
Statistics & | stats
const LoopNestParser * | partial_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

using Halide::Internal::Autoscheduler::SearchSpace::StateVector = std::vector<IntrusivePtr<State> >

Definition at line 24 of file SearchSpace.h.

## 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:

- src/autoschedulers/anderson2021/SearchSpace.h