YOrch 1.0.0
Loading...
Searching...
No Matches
fanout.hpp File Reference
#include <cstddef>
#include <tuple>
#include <type_traits>
#include <utility>
#include "../../context.hpp"
#include "../../detail/maybe_storage.hpp"
#include "../../task_tree/policies.hpp"
#include "prev_validation.hpp"
Include dependency graph for fanout.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  yorch::detail::empty_fanout_stage
 
struct  yorch::detail::fanout_stage_slot< Plan, Parent, typename >
 
struct  yorch::detail::fanout_stage_slot< Plan, Parent, std::enable_if_t< parent_has_staged_copy_children_v< Plan, Parent > > >
 
struct  yorch::detail::plan_fanout_state< Plan >
 

Namespaces

namespace  yorch
 
namespace  yorch::detail
 

Concepts

concept  yorch::detail::fanout_validatable_plan_node
 

Typedefs

template<typename Plan >
using yorch::detail::plan_fanout_stage_tuple_t = decltype(make_plan_fanout_stage_tuple< Plan >(std::make_index_sequence< Plan::node_count > {}))
 

Functions

template<typename Plan , std::size_t Parent, std::size_t... Ord>
consteval std::size_t yorch::detail::parent_exclusive_prev_child_count_impl (std::index_sequence< Ord... >)
 
template<typename Plan , std::size_t Parent, std::size_t... Ord>
consteval std::size_t yorch::detail::parent_copy_only_prev_child_count_impl (std::index_sequence< Ord... >)
 
template<typename Plan , std::size_t Parent, std::size_t... Ord>
consteval std::size_t yorch::detail::parent_consume_only_prev_child_count_impl (std::index_sequence< Ord... >)
 
template<typename Plan , std::size_t Parent, std::size_t... Ord>
consteval bool yorch::detail::parent_has_non_copy_or_consume_prev_child_impl (std::index_sequence< Ord... >)
 
template<typename Plan , std::size_t Parent>
requires fanout_validatable_plan_node<Plan, Parent>
consteval bool yorch::detail::parent_fanout_policy_valid ()
 
template<typename Plan , std::size_t... I>
requires (fanout_validatable_plan_node<Plan, I> && ...)
consteval bool yorch::detail::plan_fanout_policy_valid_impl (std::index_sequence< I... >)
 
template<typename Plan , std::size_t... I>
consteval auto yorch::detail::make_plan_fanout_stage_tuple (std::index_sequence< I... >) -> std::tuple< typename fanout_stage_slot< Plan, I >::type... >
 

Variables

template<typename Task >
constexpr bool yorch::detail::task_uses_copy_only_prev_access_v
 
template<typename Task >
constexpr bool yorch::detail::task_uses_consume_only_prev_access_v
 
template<typename Plan , std::size_t Child>
constexpr bool yorch::detail::node_uses_copy_only_prev_access_v
 
template<typename Plan , std::size_t Child>
constexpr bool yorch::detail::node_uses_consume_only_prev_access_v
 
template<typename Plan >
constexpr bool yorch::detail::plan_fanout_policy_valid_v
 
template<typename Plan , std::size_t Parent>
constexpr bool yorch::detail::parent_requires_fanout_staging_v
 
template<typename Plan , std::size_t Parent>
constexpr bool yorch::detail::parent_has_staged_copy_children_v
 
template<typename Plan , std::size_t Child>
constexpr bool yorch::detail::node_uses_staged_copy_prev_v