kokkos-execution 0.0.1
Loading...
Searching...
No Matches
Kokkos::Execution::GraphImpl Namespace Reference

Classes

struct  ApplySenderFor
struct  ApplySenderFor< stdexec::sync_wait_t >
struct  ContinuesOnOpState
 Operation state for stdexec::continues_on. More...
struct  ContinuesOnOpStateBase
struct  ContinuesOnReceiver
 Receiver for stdexec::continues_on. More...
struct  ContinuesOnSender
 Sender for stdexec::continues_on. More...
struct  Domain
struct  ExecOf
struct  ExecOf< Kokkos::Impl::DeviceHandle< Exec > >
 Retrieve the execution space type from a Kokkos::Impl::DeviceHandle. More...
struct  get_graph_t
struct  get_node_t
struct  GraphAddAggregateNodeEvent
 Event to be sent to Kokkos::utils::callbacks::dispatch when a Kokkos graph aggregate node is added. More...
struct  GraphAddNodeEvent
 Event to be sent to Kokkos::utils::callbacks::dispatch when a Kokkos graph node is added. More...
struct  GraphCompletingSender
struct  GraphComposition
 Inspired by https://github.com/NVIDIA/stdexec/blob/8c5eedd0fcf9a8ebcdb75d988f72f88efcf64a37/include/stdexec/__detail/__completion_behavior.hpp#L33. More...
struct  GraphCreateEvent
 Event to be sent to Kokkos::utils::callbacks::dispatch when a Kokkos graph is created. More...
struct  GraphInstantiateEvent
 Event to be sent to Kokkos::utils::callbacks::dispatch when a Kokkos graph is instantiated. More...
struct  GraphOperationStateFor
struct  GraphOperationStateFor< OpState, Exec >
 Specialization for Kokkos::Execution::GraphImpl::ContinuesOnOpState. More...
struct  GraphSubmitEvent
 Event to be sent to Kokkos::utils::callbacks::dispatch when a Kokkos graph is submitted. More...
struct  OpState
 Operation state that adds all closures as a sequence of nodes. More...
struct  OpStateBase
 Operation state whose sole purpose is to propagate the completion signal. More...
struct  ParallelForClosure
struct  ParallelForSender
struct  ParallelReduceClosure
struct  ParallelReduceSender
struct  RemainsOnGraphFor
struct  RemainsOnGraphFor< OpState, Exec >
 Specialization for Kokkos::Execution::GraphImpl::Scheduler::OpState. More...
struct  ScheduleFromOpState
 Operation state for stdexec::schedule_from. More...
struct  ScheduleFromOpStateBase
struct  ScheduleFromSender
 Sender for stdexec::schedule_from. More...
struct  Scheduler
 Scheduler for a Kokkos::Experimental::Graph. More...
struct  State
struct  State< GraphComposition::Attach, Exec >
 If the graph composition policy is GraphComposition::Attach, nothing needs to be stored. More...
struct  State< GraphComposition::Create, Exec >
 If the graph composition policy is GraphComposition::Create, the device handle is already stored by the graph itself. More...
struct  ThenClosure
struct  ThenSender
 Sender for stdexec::then. More...
struct  TransformSenderFor
struct  TransformSenderFor< Kokkos::Execution::parallel_for_t >
struct  TransformSenderFor< Kokkos::Execution::parallel_reduce_t >
struct  TransformSenderFor< stdexec::bulk_t >
struct  TransformSenderFor< stdexec::continues_on_t >
struct  TransformSenderFor< stdexec::schedule_from_t >
struct  TransformSenderFor< stdexec::then_t >
struct  TransformSenderFor< stdexec::when_all_t >
struct  WhenAllOpState
 Operation state for stdexec::when_all. More...
struct  WhenAllSender
 Sender for stdexec::when_all. More...
struct  WITH_SENDER_AT_INDEX

Concepts

concept  Closure
concept  connect_result_remains_on_graph_for
concept  graph_completing_sender
 Concept for a sender whose completion scheduler is Kokkos::Execution::GraphImpl::Scheduler.
concept  graph_operation_state_for
concept  NodeRef
 Constrain a type that is a specialization of Kokkos::Experimental::GraphNodeRef.
concept  remains_on_graph_for

Typedefs

template<Kokkos::ExecutionSpace Exec, typename Label>
using node_props_t = typename Kokkos::Impl::NodeCtorProps<Kokkos::Impl::DeviceHandle<Exec>, Label>::uniform_type
template<Kokkos::ExecutionSpace Exec, typename Data>
using make_node_props_t = decltype(make_node_props(std::declval<const Exec&>(), std::declval<Data&&>()))
template<typename T>
using device_handle_of_t = typename decltype(device_handle_of(std::declval<const T&>()))::type
template<typename T>
using exec_of_t = typename ExecOf<T>::type
template<typename Sndr, typename Rcvr, typename... Clsrs>
using make_op_state_t = Impl::MakeOpState<Domain, OpState>::Huddle<Sndr, Rcvr, Clsrs...>
template<typename Sndr, typename Rcvr, typename... Clsrs>
using op_state_t = typename make_op_state_t<Sndr, Rcvr, Clsrs...>::type

Functions

template<typename Tag, typename Sndr, typename... Env>
auto no_graph_scheduler_in_env () noexcept
 Show a better compile diagnostic when there is no Kokkos::Execution::GraphImpl::Scheduler found.
template<NodeRef NodeType>
auto * get_graph_impl_ptr (const NodeType &node) noexcept
 Retrieve the raw graph pointer from a node.
template<NodeRef NodeType>
auto * get_node_ptr (const NodeType &node) noexcept
 Retrieve the raw node pointer.
template<Kokkos::ExecutionSpace Exec>
void graph_create_event (const Kokkos::Experimental::Graph< Exec > &graph)
 Record a GraphCreateEvent event.
template<Kokkos::ExecutionSpace Exec, typename... Args>
auto create_graph (const Kokkos::Impl::DeviceHandle< Exec > &device_handle, Args &&... args)
 Create a graph and record the associated event with graph_create_event.
template<typename Label, NodeRef Predecessor, NodeRef NodeType>
void graph_add_node_event (Label &&label, const Predecessor &predecessor, const NodeType &node)
 Record an event for a node added after predecessor.
template<NodeRef NodeType, NodeRef... Predecessors>
void graph_add_aggregate_node_event (const NodeType &aggregate, const Predecessors &... predecessors)
 Record an event for an aggregate node added after predecessors.
template<Kokkos::ExecutionSpace Exec>
void graph_instantiate_event (const Kokkos::Experimental::Graph< Exec > &graph)
 Record a GraphInstantiateEvent event.
template<Kokkos::ExecutionSpace Exec>
void graph_submit_event (const Kokkos::Experimental::Graph< Exec > &graph, const Exec &exec)
 Record a GraphSubmitEvent event.
template<Kokkos::ExecutionSpace Exec>
void submit_graph (const Kokkos::Experimental::Graph< Exec > &graph, const Exec &exec)
 Submit a graph and record the associated event with graph_submit_event.
template<Kokkos::ExecutionSpace Exec, typename Data>
requires (Impl::labeled<std::remove_cvref_t<Data>>)
constexpr auto make_node_props (const Exec &exec, Data &&data) noexcept(noexcept(Kokkos::Experimental::node_props(Kokkos::Experimental::get_device_handle(exec), Impl::as_convertible_to_string(Impl::get_property< Impl::Label >(std::forward< Data >(data)))))) -> decltype(Kokkos::Experimental::node_props(Kokkos::Experimental::get_device_handle(exec), Impl::as_convertible_to_string(Impl::get_property< Impl::Label >(std::forward< Data >(data)))))
template<Kokkos::ExecutionSpace Exec, typename Data>
constexpr auto make_node_props (const Exec &exec, Data &&) noexcept(noexcept(Kokkos::Experimental::node_props(Kokkos::Experimental::get_device_handle(exec)))) -> decltype(Kokkos::Experimental::node_props(Kokkos::Experimental::get_device_handle(exec)))
template<Kokkos::ExecutionSpace Exec>
auto device_handle_of (const Kokkos::Impl::NodeCtorProp< Kokkos::Impl::DeviceHandle< Exec > > &) -> std::type_identity< Kokkos::Impl::DeviceHandle< Exec > >
 Retrieve the Kokkos::Impl::DeviceHandle type from a node properties type.
template<typename T, typename PropsContainer>
requires Kokkos::Impl::NodeProperties<std::remove_cvref_t<PropsContainer>>
decltype(auto) get_label_or_display_string_of (PropsContainer &&props)
 If the node properties contain a label, return it. Otherwise, use the display string of T.
template<typename Predecessor, Closure FirstClosure>
requires NodeRef<std::remove_cvref_t<Predecessor>>
static auto add_nodes (Predecessor &&predecessor, FirstClosure &&clsr)
 Add all nodes as a sequence. Hence, only the first node may be added after the root node.
template<typename Predecessor, Closure FirstClosure, Closure... RestOfClosures>
requires NodeRef<std::remove_cvref_t<Predecessor>> && (sizeof...(RestOfClosures) > 0)
static auto add_nodes (Predecessor &&predecessor, FirstClosure &&clsr, RestOfClosures &&... clsrs)

Variables

constexpr get_graph_t get_graph {}
constexpr get_node_t get_node {}

Typedef Documentation

◆ device_handle_of_t

template<typename T>
using Kokkos::Execution::GraphImpl::device_handle_of_t = typename decltype(device_handle_of(std::declval<const T&>()))::type

Definition at line 41 of file node_props.hpp.

◆ exec_of_t

template<typename T>
using Kokkos::Execution::GraphImpl::exec_of_t = typename ExecOf<T>::type

Definition at line 55 of file node_props.hpp.

◆ make_node_props_t

template<Kokkos::ExecutionSpace Exec, typename Data>
using Kokkos::Execution::GraphImpl::make_node_props_t = decltype(make_node_props(std::declval<const Exec&>(), std::declval<Data&&>()))

Definition at line 33 of file node_props.hpp.

◆ make_op_state_t

template<typename Sndr, typename Rcvr, typename... Clsrs>
using Kokkos::Execution::GraphImpl::make_op_state_t = Impl::MakeOpState<Domain, OpState>::Huddle<Sndr, Rcvr, Clsrs...>

Definition at line 317 of file operation_state.hpp.

◆ node_props_t

template<Kokkos::ExecutionSpace Exec, typename Label>
using Kokkos::Execution::GraphImpl::node_props_t = typename Kokkos::Impl::NodeCtorProps<Kokkos::Impl::DeviceHandle<Exec>, Label>::uniform_type

Definition at line 19 of file node_props.hpp.

◆ op_state_t

template<typename Sndr, typename Rcvr, typename... Clsrs>
using Kokkos::Execution::GraphImpl::op_state_t = typename make_op_state_t<Sndr, Rcvr, Clsrs...>::type

Definition at line 320 of file operation_state.hpp.

Function Documentation

◆ add_nodes() [1/2]

template<typename Predecessor, Closure FirstClosure>
requires NodeRef<std::remove_cvref_t<Predecessor>>
auto Kokkos::Execution::GraphImpl::add_nodes ( Predecessor && predecessor,
FirstClosure && clsr )
static

Add all nodes as a sequence. Hence, only the first node may be added after the root node.

Definition at line 173 of file operation_state.hpp.

References add_nodes().

◆ add_nodes() [2/2]

template<typename Predecessor, Closure FirstClosure, Closure... RestOfClosures>
requires NodeRef<std::remove_cvref_t<Predecessor>> && (sizeof...(RestOfClosures) > 0)
auto Kokkos::Execution::GraphImpl::add_nodes ( Predecessor && predecessor,
FirstClosure && clsr,
RestOfClosures &&... clsrs )
static

Definition at line 179 of file operation_state.hpp.

References add_nodes().

◆ create_graph()

template<Kokkos::ExecutionSpace Exec, typename... Args>
auto Kokkos::Execution::GraphImpl::create_graph ( const Kokkos::Impl::DeviceHandle< Exec > & device_handle,
Args &&... args )

Create a graph and record the associated event with graph_create_event.

Definition at line 143 of file events.hpp.

References create_graph(), and graph_create_event().

◆ device_handle_of()

template<Kokkos::ExecutionSpace Exec>
auto Kokkos::Execution::GraphImpl::device_handle_of ( const Kokkos::Impl::NodeCtorProp< Kokkos::Impl::DeviceHandle< Exec > > & ) -> std::type_identity< Kokkos::Impl::DeviceHandle< Exec > >

Retrieve the Kokkos::Impl::DeviceHandle type from a node properties type.

References device_handle_of().

◆ get_graph_impl_ptr()

template<NodeRef NodeType>
auto * Kokkos::Execution::GraphImpl::get_graph_impl_ptr ( const NodeType & node)
noexcept

Retrieve the raw graph pointer from a node.

Definition at line 117 of file events.hpp.

References get_graph_impl_ptr().

◆ get_label_or_display_string_of()

template<typename T, typename PropsContainer>
requires Kokkos::Impl::NodeProperties<std::remove_cvref_t<PropsContainer>>
decltype(auto) Kokkos::Execution::GraphImpl::get_label_or_display_string_of ( PropsContainer && props)

If the node properties contain a label, return it. Otherwise, use the display string of T.

Note
It avoids instantiating Kokkos::Execution::Impl::display_string_of if it is not necessary.

Definition at line 64 of file node_props.hpp.

References Kokkos::Execution::Impl::display_string_of(), and get_label_or_display_string_of().

◆ get_node_ptr()

template<NodeRef NodeType>
auto * Kokkos::Execution::GraphImpl::get_node_ptr ( const NodeType & node)
noexcept

Retrieve the raw node pointer.

Definition at line 123 of file events.hpp.

References get_node_ptr().

◆ graph_add_aggregate_node_event()

template<NodeRef NodeType, NodeRef... Predecessors>
void Kokkos::Execution::GraphImpl::graph_add_aggregate_node_event ( const NodeType & aggregate,
const Predecessors &... predecessors )

Record an event for an aggregate node added after predecessors.

Definition at line 166 of file events.hpp.

References Kokkos::utils::callbacks::dispatch(), get_graph_impl_ptr(), get_node_ptr(), and graph_add_aggregate_node_event().

◆ graph_add_node_event()

template<typename Label, NodeRef Predecessor, NodeRef NodeType>
void Kokkos::Execution::GraphImpl::graph_add_node_event ( Label && label,
const Predecessor & predecessor,
const NodeType & node )

◆ graph_create_event()

template<Kokkos::ExecutionSpace Exec>
void Kokkos::Execution::GraphImpl::graph_create_event ( const Kokkos::Experimental::Graph< Exec > & graph)

◆ graph_instantiate_event()

template<Kokkos::ExecutionSpace Exec>
void Kokkos::Execution::GraphImpl::graph_instantiate_event ( const Kokkos::Experimental::Graph< Exec > & graph)

◆ graph_submit_event()

template<Kokkos::ExecutionSpace Exec>
void Kokkos::Execution::GraphImpl::graph_submit_event ( const Kokkos::Experimental::Graph< Exec > & graph,
const Exec & exec )

◆ make_node_props() [1/2]

template<Kokkos::ExecutionSpace Exec, typename Data>
auto Kokkos::Execution::GraphImpl::make_node_props ( const Exec & exec,
Data &&  ) -> decltype(Kokkos::Experimental::node_props(Kokkos::Experimental::get_device_handle(exec)))
constexprnoexcept

Definition at line 29 of file node_props.hpp.

References make_node_props().

◆ make_node_props() [2/2]

template<Kokkos::ExecutionSpace Exec, typename Data>
requires (Impl::labeled<std::remove_cvref_t<Data>>)
auto Kokkos::Execution::GraphImpl::make_node_props ( const Exec & exec,
Data && data ) -> decltype(Kokkos::Experimental::node_props( Kokkos::Experimental::get_device_handle(exec), Impl::as_convertible_to_string(Impl::get_property< Impl::Label >(std::forward< Data >(data)))))
constexprnoexcept

◆ no_graph_scheduler_in_env()

template<typename Tag, typename Sndr, typename... Env>
auto Kokkos::Execution::GraphImpl::no_graph_scheduler_in_env ( )
noexcept

◆ submit_graph()

template<Kokkos::ExecutionSpace Exec>
void Kokkos::Execution::GraphImpl::submit_graph ( const Kokkos::Experimental::Graph< Exec > & graph,
const Exec & exec )

Submit a graph and record the associated event with graph_submit_event.

Definition at line 196 of file events.hpp.

References graph_submit_event(), and submit_graph().

Variable Documentation

◆ get_graph

get_graph_t Kokkos::Execution::GraphImpl::get_graph {}
inlineconstexpr

Definition at line 17 of file get_graph.hpp.

◆ get_node

get_node_t Kokkos::Execution::GraphImpl::get_node {}
inlineconstexpr

Definition at line 15 of file get_node.hpp.