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

Classes

struct  Scheduler
 Scheduler for a Kokkos::Experimental::Graph. More...
struct  TransformSenderFor< stdexec::bulk_t >
struct  Domain
struct  GraphCreateEvent
 Event to be sent to Kokkos::utils::callbacks::dispatch when a Kokkos graph is created. More...
struct  GraphAddNodeEvent
 Event to be sent to Kokkos::utils::callbacks::dispatch when a Kokkos graph node is added. More...
struct  GraphInstantiateEvent
 Event to be sent to Kokkos::utils::callbacks::dispatch when a Kokkos graph is instantiated. More...
struct  GraphSubmitEvent
 Event to be sent to Kokkos::utils::callbacks::dispatch when a Kokkos graph is submitted. More...
struct  get_graph_t
struct  GraphComposition
 Inspired by https://github.com/NVIDIA/stdexec/blob/8c5eedd0fcf9a8ebcdb75d988f72f88efcf64a37/include/stdexec/__detail/__completion_behavior.hpp#L33. More...
struct  get_node_t
struct  ApplySenderFor
struct  TransformSenderFor
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  OpStateBase
 Operation state whose sole purpose is to propagate the completion signal. More...
struct  OpState
 Operation state that adds all closures as a sequence of nodes. More...
struct  ParallelForClosure
struct  ParallelForSender
struct  TransformSenderFor< Kokkos::Execution::parallel_for_t >
struct  GraphCompletingSender
struct  ApplySenderFor< stdexec::sync_wait_t >
struct  ThenClosure
struct  ThenSender
 Sender for stdexec::then. More...
struct  TransformSenderFor< stdexec::then_t >

Concepts

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

Typedefs

template<typename Sndr, typename Rcvr, typename... Clsrs>
using make_opstate_t = Impl::MakeOpState<Domain, OpState>::Huddle<Sndr, Rcvr, Clsrs...>
template<typename Sndr, typename Rcvr, typename... Clsrs>
using opstate_t = typename make_opstate_t<Sndr, Rcvr, Clsrs...>::type

Functions

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<NodeRef Predecessor, NodeRef NodeType>
void graph_add_node_event (const Predecessor &predecessor, const NodeType &node)
 Record an event for a node added after predecessor.
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<typename Predecessor, Closure FirstClosure, Closure... RestOfClosures>
requires NodeRef<std::remove_cvref_t<Predecessor>>
static auto add_nodes (Predecessor &&predecessor, FirstClosure &&clsr, RestOfClosures &&... clsrs)
 Add all nodes as a sequence. Hence, only the first node may be added after the root node.
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.

Variables

constexpr get_graph_t get_graph {}
constexpr get_node_t get_node {}

Typedef Documentation

◆ make_opstate_t

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

Definition at line 210 of file operation_state.hpp.

◆ opstate_t

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

Definition at line 213 of file operation_state.hpp.

Function Documentation

◆ add_nodes()

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

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

Definition at line 96 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 100 of file events.hpp.

References graph_create_event().

◆ 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 76 of file events.hpp.

◆ 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 82 of file events.hpp.

◆ graph_add_node_event()

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

Record an event for a node added after predecessor.

Todo
Use https://github.com/kokkos/kokkos/pull/9170 to determine if the predecessor is a root node.

Definition at line 112 of file events.hpp.

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

◆ 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)

Record a GraphInstantiateEvent event.

Definition at line 149 of file events.hpp.

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

◆ graph_submit_event()

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

Record a GraphSubmitEvent event.

Definition at line 158 of file events.hpp.

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

◆ 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 168 of file events.hpp.

References graph_submit_event().

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.