YOrch 1.0.0
Loading...
Searching...
No Matches
yorch::compiled_plan< Nodes > Struct Template Reference

Static plan compiled from a task_tree_builder. More...

#include <compiled_plan.hpp>

Public Types

using tuple_type = std::tuple< Nodes... >
 
template<std::size_t I>
using node_type = std::tuple_element_t< I, tuple_type >
 
template<std::size_t I>
using task_type = typename node_type< I >::task_type
 
template<std::size_t I>
using fanout_policy_type = typename node_type< I >::fanout_policy_type
 
template<std::size_t I>
using raw_result_type = detail::task_raw_result_t< task_type< I > >
 
template<std::size_t I>
using output_type = detail::task_output_for_t< task_type< I > >
 

Public Member Functions

template<std::size_t I>
constexpr auto & entry () &noexcept
 
template<std::size_t I>
constexpr const auto & entry () const &noexcept
 
template<std::size_t I>
constexpr auto && entry () &&noexcept
 

Public Attributes

tuple_type nodes {}
 Stored plan nodes in insertion order.
 

Static Public Attributes

static constexpr std::size_t node_count = sizeof...(Nodes)
 
static constexpr std::size_t max_level = detail::max_level_v<Nodes...>
 
static constexpr std::size_t no_parent = node_count
 
static constexpr std::size_t slot_count = node_count
 
static constexpr auto levels = detail::compiled_levels_v<Nodes...>
 Node levels in insertion order.
 
static constexpr auto parent_indices = detail::compiled_parent_indices_v<Nodes...>
 Direct parent index for each node; the root stores no_parent.
 
static constexpr auto child_counts = detail::compiled_child_layout_v<Nodes...>.counts
 Number of direct children for each node.
 
static constexpr auto child_offsets = detail::compiled_child_layout_v<Nodes...>.offsets
 Start offset of each node's child list inside child_indices.
 
static constexpr auto child_indices = detail::compiled_child_layout_v<Nodes...>.indices
 Flattened direct-child adjacency storage.
 
static constexpr auto slot_indices = detail::compiled_slot_indices_v<Nodes...>
 Logical output slot assigned to each node by now.
 
template<std::size_t I>
static constexpr detail::output_storage_mode output_storage_mode_for
 
template<std::size_t I>
static constexpr detail::slot_logical_policy slot_logical_policy_for
 
template<std::size_t I>
static constexpr std::size_t level = levels[I]
 
template<std::size_t I>
static constexpr std::size_t parent_index = parent_indices[I]
 
template<std::size_t I>
static constexpr std::size_t child_count = child_counts[I]
 
template<std::size_t I>
static constexpr std::size_t child_offset = child_offsets[I]
 
template<std::size_t I>
static constexpr std::size_t slot_index = slot_indices[I]
 
template<std::size_t I, std::size_t ChildOrdinal>
static constexpr std::size_t child_index
 

Detailed Description

template<typename... Nodes>
struct yorch::compiled_plan< Nodes >

Static plan compiled from a task_tree_builder.

The compiled plan keeps the original node tuple while materializing the tree's structural metadata into constexpr arrays that later executors can consume directly.

Template Parameters
NodesRecorded task-tree node types in insertion order.

Definition at line 25 of file compiled_plan.hpp.

Member Typedef Documentation

◆ fanout_policy_type

template<typename... Nodes>
template<std::size_t I>
using yorch::compiled_plan< Nodes >::fanout_policy_type = typename node_type<I>::fanout_policy_type

Definition at line 56 of file compiled_plan.hpp.

◆ node_type

template<typename... Nodes>
template<std::size_t I>
using yorch::compiled_plan< Nodes >::node_type = std::tuple_element_t<I, tuple_type>

Definition at line 50 of file compiled_plan.hpp.

◆ output_type

template<typename... Nodes>
template<std::size_t I>
using yorch::compiled_plan< Nodes >::output_type = detail::task_output_for_t<task_type<I> >

Definition at line 62 of file compiled_plan.hpp.

◆ raw_result_type

template<typename... Nodes>
template<std::size_t I>
using yorch::compiled_plan< Nodes >::raw_result_type = detail::task_raw_result_t<task_type<I> >

Definition at line 59 of file compiled_plan.hpp.

◆ task_type

template<typename... Nodes>
template<std::size_t I>
using yorch::compiled_plan< Nodes >::task_type = typename node_type<I>::task_type

Definition at line 53 of file compiled_plan.hpp.

◆ tuple_type

template<typename... Nodes>
using yorch::compiled_plan< Nodes >::tuple_type = std::tuple<Nodes...>

Definition at line 26 of file compiled_plan.hpp.

Member Function Documentation

◆ entry() [1/3]

template<typename... Nodes>
template<std::size_t I>
constexpr auto && yorch::compiled_plan< Nodes >::entry ( ) &&
inlineconstexprnoexcept

Definition at line 102 of file compiled_plan.hpp.

◆ entry() [2/3]

template<typename... Nodes>
template<std::size_t I>
constexpr auto & yorch::compiled_plan< Nodes >::entry ( ) &
inlineconstexprnoexcept

Definition at line 92 of file compiled_plan.hpp.

◆ entry() [3/3]

template<typename... Nodes>
template<std::size_t I>
constexpr const auto & yorch::compiled_plan< Nodes >::entry ( ) const &
inlineconstexprnoexcept

Definition at line 97 of file compiled_plan.hpp.

Member Data Documentation

◆ child_count

template<typename... Nodes>
template<std::size_t I>
constexpr std::size_t yorch::compiled_plan< Nodes >::child_count = child_counts[I]
staticconstexpr

Definition at line 79 of file compiled_plan.hpp.

◆ child_counts

template<typename... Nodes>
constexpr auto yorch::compiled_plan< Nodes >::child_counts = detail::compiled_child_layout_v<Nodes...>.counts
staticconstexpr

Number of direct children for each node.

Definition at line 41 of file compiled_plan.hpp.

◆ child_index

template<typename... Nodes>
template<std::size_t I, std::size_t ChildOrdinal>
constexpr std::size_t yorch::compiled_plan< Nodes >::child_index
staticconstexpr
Initial value:
=
child_indices[child_offset<I> + ChildOrdinal]
static constexpr auto child_indices
Flattened direct-child adjacency storage.

Definition at line 88 of file compiled_plan.hpp.

◆ child_indices

template<typename... Nodes>
constexpr auto yorch::compiled_plan< Nodes >::child_indices = detail::compiled_child_layout_v<Nodes...>.indices
staticconstexpr

Flattened direct-child adjacency storage.

Definition at line 45 of file compiled_plan.hpp.

◆ child_offset

template<typename... Nodes>
template<std::size_t I>
constexpr std::size_t yorch::compiled_plan< Nodes >::child_offset = child_offsets[I]
staticconstexpr

Definition at line 82 of file compiled_plan.hpp.

◆ child_offsets

template<typename... Nodes>
constexpr auto yorch::compiled_plan< Nodes >::child_offsets = detail::compiled_child_layout_v<Nodes...>.offsets
staticconstexpr

Start offset of each node's child list inside child_indices.

Definition at line 43 of file compiled_plan.hpp.

◆ level

template<typename... Nodes>
template<std::size_t I>
constexpr std::size_t yorch::compiled_plan< Nodes >::level = levels[I]
staticconstexpr

Definition at line 73 of file compiled_plan.hpp.

◆ levels

template<typename... Nodes>
constexpr auto yorch::compiled_plan< Nodes >::levels = detail::compiled_levels_v<Nodes...>
staticconstexpr

Node levels in insertion order.

Definition at line 37 of file compiled_plan.hpp.

◆ max_level

template<typename... Nodes>
constexpr std::size_t yorch::compiled_plan< Nodes >::max_level = detail::max_level_v<Nodes...>
staticconstexpr

Definition at line 29 of file compiled_plan.hpp.

◆ no_parent

template<typename... Nodes>
constexpr std::size_t yorch::compiled_plan< Nodes >::no_parent = node_count
staticconstexpr

Definition at line 30 of file compiled_plan.hpp.

◆ node_count

template<typename... Nodes>
constexpr std::size_t yorch::compiled_plan< Nodes >::node_count = sizeof...(Nodes)
staticconstexpr

Definition at line 28 of file compiled_plan.hpp.

◆ nodes

template<typename... Nodes>
tuple_type yorch::compiled_plan< Nodes >::nodes {}

Stored plan nodes in insertion order.

Definition at line 34 of file compiled_plan.hpp.

◆ output_storage_mode_for

template<typename... Nodes>
template<std::size_t I>
constexpr detail::output_storage_mode yorch::compiled_plan< Nodes >::output_storage_mode_for
staticconstexpr
Initial value:

Definition at line 65 of file compiled_plan.hpp.

◆ parent_index

template<typename... Nodes>
template<std::size_t I>
constexpr std::size_t yorch::compiled_plan< Nodes >::parent_index = parent_indices[I]
staticconstexpr

Definition at line 76 of file compiled_plan.hpp.

◆ parent_indices

template<typename... Nodes>
constexpr auto yorch::compiled_plan< Nodes >::parent_indices = detail::compiled_parent_indices_v<Nodes...>
staticconstexpr

Direct parent index for each node; the root stores no_parent.

Definition at line 39 of file compiled_plan.hpp.

◆ slot_count

template<typename... Nodes>
constexpr std::size_t yorch::compiled_plan< Nodes >::slot_count = node_count
staticconstexpr

Definition at line 31 of file compiled_plan.hpp.

◆ slot_index

template<typename... Nodes>
template<std::size_t I>
constexpr std::size_t yorch::compiled_plan< Nodes >::slot_index = slot_indices[I]
staticconstexpr

Definition at line 85 of file compiled_plan.hpp.

◆ slot_indices

template<typename... Nodes>
constexpr auto yorch::compiled_plan< Nodes >::slot_indices = detail::compiled_slot_indices_v<Nodes...>
staticconstexpr

Logical output slot assigned to each node by now.

Definition at line 47 of file compiled_plan.hpp.

◆ slot_logical_policy_for

template<typename... Nodes>
template<std::size_t I>
constexpr detail::slot_logical_policy yorch::compiled_plan< Nodes >::slot_logical_policy_for
staticconstexpr
Initial value:

Definition at line 69 of file compiled_plan.hpp.


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