Go to the documentation of this file.
15 #include <unordered_map>
16 #include <unordered_set>
21 namespace Autoscheduler {
67 vector<vector<int64_t>> &inner_tilings,
68 const vector<int64_t> &pure_size)
const;
77 int &num_children)
const;
94 std::unordered_map<uint64_t, StateVector> &secondary_options,
106 #endif // SEARCH_SPACE_H
bool add_child(const IntrusivePtr< State > &state, const IntrusivePtr< const LoopNest > &new_root, std::function< void(IntrusivePtr< State > &&)> &accept_child) const
vector< ThreadTileOption > filter_thread_tile_options(vector< IntrusivePtr< const LoopNest >> &loop_nests) const
const LoopNestParser * partial_schedule
vector< vector< int64_t > > generate_compute_root_serial_tilings(const IntrusivePtr< const LoopNest > &pure_stage, const FunctionDAG::Node *node) const
vector< int64_t > inner_tiling
void generate_children(const IntrusivePtr< State > &state, std::function< void(IntrusivePtr< State > &&)> &accept_child, int pass_idx, bool is_pre_pass)
bool operator<(const ParallelTileOption &other) const
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 memoize_blocks(const FunctionDAG::Node *node, LoopNest *new_root)
ParallelTileOption & operator=(ParallelTileOption &&)=default
SearchSpace(const FunctionDAG &dag, const Anderson2021Params ¶ms, const Target &target, std::mt19937 &rng, CostModel *cost_model, Statistics &stats, const LoopNestParser *partial_schedule)
Intrusive shared pointers have a reference count (a RefCount object) stored in the class itself.
bool is_in_partial_schedule(const FunctionDAG::Node *node) const
This file defines the class FunctionDAG, which is our representation of a Halide pipeline,...
@ Internal
Not visible externally, similar to 'static' linkage in C.
vector< int64_t > outer_tiling
NodeMap< std::map< int, std::vector< IntrusivePtr< const LoopNest > > > > memoized_compute_root_blocks
ParallelTileOption()=default
signed __INT64_TYPE__ int64_t
NodeMap< bool > inlined_nodes
void freeze_lowest_cost_stages(const IntrusivePtr< State > &best)
const Anderson2021Params & params
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
std::vector< IntrusivePtr< State > > StateVector
SearchSpaceOptions search_space_options
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)
A struct representing a target machine and os to generate code for.
NodeMap< std::vector< IntrusivePtr< const LoopNest > > > compute_root_nodes