YOrch 1.0.0
Loading...
Searching...
No Matches
plan.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <type_traits>
4
5#include "../detail/executor/fanout.hpp"
6#include "../detail/executor/plan_validation.hpp"
7#include "../detail/executor/prev_validation.hpp"
8#include "../detail/executor/serial_dfs.hpp"
9#include "../detail/executor/serial_dfs_explicit_heap_stack.hpp"
10#include "../slots.hpp"
11#include "policies.hpp"
12
13namespace yorch {
14
38template <
39 typename LayoutPolicy = slot_layout_one_to_one_policy,
40 typename ExecPolicy = exec_serial_dfs_recursive_policy,
41 typename Plan>
44 (Plan::node_count > 0) &&
50[[nodiscard]] constexpr step_result run_plan(Plan& plan) {
53
54 if constexpr (std::is_same_v<std::remove_cvref_t<ExecPolicy>, exec_serial_dfs_recursive_policy>) {
55 return detail::run_node<0>(plan, slots, fanout);
56 } else {
57 return detail::run_explicit_heap_stack(plan, slots, fanout);
58 }
59}
60
71template <
72 typename LayoutPolicy = slot_layout_one_to_one_policy,
73 typename ExecPolicy = exec_serial_dfs_recursive_policy,
74 typename Plan,
75 typename Ctx>
78 (Plan::node_count > 0) &&
84[[nodiscard]] constexpr step_result run_plan(Plan& plan, Ctx& ctx) {
87
88 if constexpr (std::is_same_v<std::remove_cvref_t<ExecPolicy>, exec_serial_dfs_recursive_policy>) {
89 return detail::run_node<0>(plan, slots, fanout, ctx);
90 } else {
91 return detail::run_explicit_heap_stack(plan, slots, fanout, ctx);
92 }
93}
94
95} // namespace yorch
constexpr step_result run_explicit_heap_stack(Plan &plan, Slots &slots, plan_fanout_state< Plan > &fanout)
constexpr bool is_adapter_descriptor_v
Definition adapters.hpp:63
constexpr step_result run_plan(Plan &plan)
Executes a compiled plan using the selected serial depth-first policy.
Definition plan.hpp:50
Public per-run plan payload storage entry point.
Represents the basic outcome of a task step.
Definition result.hpp:42