kokkos-utils 0.0.1
 
Loading...
Searching...
No Matches
Kokkos::utils::callbacks::Manager Class Reference

Class to manage Kokkos profiling callback calls. More...

#include <Manager.hpp>

Public Types

using listener_list_t = std::list<std::unique_ptr<impl::ListenerConceptBase>>
 
using listener_list_const_iter_t = typename listener_list_t::const_iterator
 
using listener_call_opr_list_tuple_t = impl::listener_call_opr_list_tuple_t
 

Public Member Functions

 Manager (const Manager &)=delete
 
Manageroperator= (const Manager &)=delete
 
 ~Manager ()
 

Static Public Member Functions

static void initialize ()
 
static void finalize ()
 
static Managerget_instance ()
 
template<Listener Callable>
static listener_list_const_iter_t register_listener (std::shared_ptr< Callable > callable)
 Register a callable object, passed as a shared pointer, as a listener.
 
template<typename T>
requires Listener<std::remove_cvref_t<T>>
static listener_list_const_iter_t register_listener (T &&callable)
 
template<Listener Callable>
static void unregister_listener (const Callable *const callable)
 Unregister a callable object as a listener.
 
static void unregister_listener (const listener_list_const_iter_t &iter)
 

Protected Member Functions

 Manager ()
 Constructor. Retrieves and stores the Kokkos::Tools::Experimental::EventSet containing the Kokkos callback function pointers.
 

Detailed Description

Class to manage Kokkos profiling callback calls.

This class allows the registration of callable objects as listeners for events representing Kokkos profiling callback calls.

On initialization, this class uses Kokkos::Tools::Experimental::get_callbacks to retrieve the callback function pointers already set within Kokkos. Note that this class refers to these callback functions as the "context callbacks".

On registering one or more callable objects as listeners for events, this class stores these callable objects by using a type-erasure pattern. Thus, on registering a callable object, this callable object is wrapped into a impl::ListenerModel that implements the abstract interface composed of impl::ListenerConceptBase and one or more impl::ListenerConceptCallOperator instances. The wrapped callable object is then stored in a list of unique pointers to the abstract base class.

In order to efficiently dispatch events to the corresponding call operators of the callable objects, this class stores for each event type a list of pointers to the listener models wrapping the callable objects that are registered as listeners for this event type. Note that this class refers to the call operators of these registered callable objects as the "registered callbacks".

This class uses the setters Kokkos::Tools::Experimental::set_<event_type_name>_callback to set the Kokkos callback function pointers to this class's dispatching functions for the event types for which there are registered callbacks. When a Kokkos callback call is made, these dispatching functions call the context callback first and then sequentially the registered callbacks for the event type.

On finalization, this class clears the list of registered callable objects and restores the Kokkos callback function pointers to the values they had prior to initializing this class.

Note
The profiling callback calls are implemented in Kokkos in terms of C function pointers. Class member functions cannot be converted to such C function pointers, unless they are static. This class is thus implemented as a singleton, and the dispatching functions are static member functions.

Definition at line 139 of file Manager.hpp.

Member Typedef Documentation

◆ listener_call_opr_list_tuple_t

◆ listener_list_const_iter_t

using Kokkos::utils::callbacks::Manager::listener_list_const_iter_t = typename listener_list_t::const_iterator

Definition at line 143 of file Manager.hpp.

◆ listener_list_t

Definition at line 142 of file Manager.hpp.

Constructor & Destructor Documentation

◆ Manager() [1/2]

Kokkos::utils::callbacks::Manager::Manager ( const Manager & )
delete

◆ ~Manager()

Kokkos::utils::callbacks::Manager::~Manager ( )
inline

Definition at line 150 of file Manager.hpp.

◆ Manager() [2/2]

Kokkos::utils::callbacks::Manager::Manager ( )
inlineprotected

Constructor. Retrieves and stores the Kokkos::Tools::Experimental::EventSet containing the Kokkos callback function pointers.

Definition at line 157 of file Manager.hpp.

Member Function Documentation

◆ finalize()

static void Kokkos::utils::callbacks::Manager::finalize ( )
inlinestatic

Definition at line 161 of file Manager.hpp.

◆ get_instance()

static Manager & Kokkos::utils::callbacks::Manager::get_instance ( )
inlinestatic

Definition at line 163 of file Manager.hpp.

◆ initialize()

static void Kokkos::utils::callbacks::Manager::initialize ( )
inlinestatic

Definition at line 160 of file Manager.hpp.

◆ operator=()

Manager & Kokkos::utils::callbacks::Manager::operator= ( const Manager & )
delete

◆ register_listener() [1/2]

template<Listener Callable>
static listener_list_const_iter_t Kokkos::utils::callbacks::Manager::register_listener ( std::shared_ptr< Callable > callable)
inlinestatic

Register a callable object, passed as a shared pointer, as a listener.

Todo
Add the possibility to select only a subset of the event types.

Definition at line 171 of file Manager.hpp.

◆ register_listener() [2/2]

template<typename T>
requires Listener<std::remove_cvref_t<T>>
static listener_list_const_iter_t Kokkos::utils::callbacks::Manager::register_listener ( T && callable)
inlinestatic

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

This overload registers a new callable object that is copy or move constructed from the passed callable. This overload can be useful for instance to register a lambda as a listener.

Definition at line 185 of file Manager.hpp.

◆ unregister_listener() [1/2]

template<Listener Callable>
static void Kokkos::utils::callbacks::Manager::unregister_listener ( const Callable *const callable)
inlinestatic

Unregister a callable object as a listener.

Definition at line 194 of file Manager.hpp.

◆ unregister_listener() [2/2]

static void Kokkos::utils::callbacks::Manager::unregister_listener ( const listener_list_const_iter_t & iter)
inlinestatic

Definition at line 222 of file Manager.hpp.


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