Inheritance diagram for ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >:
ttg::TTBase

Documentation

template<typename keyT, typename output_terminalsT, typename derivedT, typename input_valueTs>
class ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >

CRTP base for MADNESS-based TT classes

Template Parameters
keyTa Key type
output_terminalsT
derivedT
input_valueTsttg::typelist of value types (no references; pointers are OK) encoding the types of input values flowing into this TT; a const type indicates nonmutating (read-only) use, nonconst type indicates mutating use (e.g. the corresponding input can be used as scratch, moved-from, etc.)

Definition at line 187 of file ttg.h.

Public Types

using ttT = TT
 
using key_type = keyT
 
using input_terminals_type = ttg::detail::input_terminals_tuple_t< keyT, input_tuple_type >
 
using input_edges_type = ttg::detail::edges_tuple_t< keyT, ttg::meta::decayed_typelist_t< input_tuple_type > >
 
using input_values_full_tuple_type = ttg::meta::void_to_Void_tuple_t< ttg::meta::decayed_typelist_t< actual_input_tuple_type > >
 
using input_refs_full_tuple_type = ttg::meta::add_glvalue_reference_tuple_t< ttg::meta::void_to_Void_tuple_t< actual_input_tuple_type > >
 
using input_args_type = actual_input_tuple_type
 
using input_values_tuple_type = ttg::meta::drop_void_t< ttg::meta::decayed_typelist_t< input_tuple_type > >
 
using input_refs_tuple_type = ttg::meta::drop_void_t< ttg::meta::add_glvalue_reference_tuple_t< input_tuple_type > >
 
using output_terminals_type = output_terminalsT
 
using output_edges_type = typename ttg::terminals_to_edges< output_terminalsT >::type
 

Public Member Functions

ttg::World get_world () const override final
 
template<std::size_t i, bool key_is_void = ttg::meta::is_void_v<keyT>>
std::enable_if_t< key_is_void, void > set_argstream_size (std::size_t size)
 
template<std::size_t i>
void set_static_argstream_size (std::size_t size)
 
template<std::size_t i, typename Key = keyT, bool key_is_void = ttg::meta::is_void_v<Key>>
std::enable_if_t<!key_is_void, void > set_argstream_size (const Key &key, std::size_t size)
 
template<std::size_t i, typename Key = keyT, bool key_is_void = ttg::meta::is_void_v<Key>>
std::enable_if_t<!key_is_void, void > finalize_argstream (const Key &key)
 finalizes stream for input i More...
 
template<std::size_t i, bool key_is_void = ttg::meta::is_void_v<keyT>>
std::enable_if_t< key_is_void, void > finalize_argstream ()
 finalizes stream for input i More...
 
template<typename keymapT = ttg::detail::default_keymap<keyT>, typename priomapT = ttg::detail::default_priomap<keyT>>
 TT (const std::string &name, const std::vector< std::string > &innames, const std::vector< std::string > &outnames, ttg::World world, keymapT &&keymap_=keymapT(), priomapT &&priomap_=priomapT())
 
template<typename keymapT = ttg::detail::default_keymap<keyT>, typename priomapT = ttg::detail::default_priomap<keyT>>
 TT (const std::string &name, const std::vector< std::string > &innames, const std::vector< std::string > &outnames, keymapT &&keymap=keymapT(ttg::default_execution_context()), priomapT &&priomap=priomapT())
 
template<typename keymapT = ttg::detail::default_keymap<keyT>, typename priomapT = ttg::detail::default_priomap<keyT>>
 TT (const input_edges_type &inedges, const output_edges_type &outedges, const std::string &name, const std::vector< std::string > &innames, const std::vector< std::string > &outnames, ttg::World world, keymapT &&keymap_=keymapT(), priomapT &&priomap_=priomapT())
 
template<typename keymapT = ttg::detail::default_keymap<keyT>, typename priomapT = ttg::detail::default_priomap<keyT>>
 TT (const input_edges_type &inedges, const output_edges_type &outedges, const std::string &name, const std::vector< std::string > &innames, const std::vector< std::string > &outnames, keymapT &&keymap=keymapT(ttg::default_execution_context()), priomapT &&priomap=priomapT())
 
virtual ~TT ()
 
template<std::size_t i, typename Reducer >
void set_input_reducer (Reducer &&reducer)
 
template<std::size_t i, typename Reducer >
void set_input_reducer (Reducer &&reducer, std::size_t size)
 
template<typename Keymap >
void set_keymap (Keymap &&km)
 
auto get_priomap (void) const
 
template<typename Priomap >
void set_priomap (Priomap &&pm)
 
void make_executable () override
 implementation of TTBase::make_executable() More...
 
void fence () override
 Waits for the entire TTG associated with this TT to be completed (collective) More...
 
template<std::size_t i>
std::tuple_element_t< i, input_terminals_type > * in ()
 Returns pointer to input terminal i to facilitate connection — terminal cannot be copied, moved or assigned. More...
 
template<std::size_t i>
std::tuple_element_t< i, output_terminalsT > * out ()
 Returns pointer to output terminal for purpose of connection — terminal cannot be copied, moved or assigned. More...
 
template<typename Key = keyT>
std::enable_if_t<!ttg::meta::is_void_v< Key > &&!ttg::meta::is_empty_tuple_v< input_values_tuple_type >, void > invoke (const Key &key, const input_values_tuple_type &args)
 Manual injection of a task with all input arguments specified as a tuple. More...
 
template<typename Key = keyT>
std::enable_if_t< ttg::meta::is_void_v< Key > &&!ttg::meta::is_empty_tuple_v< input_values_tuple_type >, void > invoke (const input_values_tuple_type &args)
 Manual injection of a key-free task with all input arguments specified as a tuple. More...
 
template<typename Key = keyT>
std::enable_if_t<!ttg::meta::is_void_v< Key > &&ttg::meta::is_empty_tuple_v< input_values_tuple_type >, void > invoke (const Key &key)
 Manual injection of a task that has no arguments. More...
 
template<typename Key = keyT>
std::enable_if_t< ttg::meta::is_void_v< Key > &&ttg::meta::is_empty_tuple_v< input_values_tuple_type >, void > invoke ()
 Manual injection of a task that has no key or arguments. More...
 
void invoke () override
 
void set_defer_writer (bool _)
 
bool get_defer_writer (bool _)
 
decltype(keymap) const & get_keymap () const
 
template<typename Key >
std::enable_if_t<!ttg::meta::is_void_v< Key >, int > owner (const Key &key) const
 
template<typename Key >
std::enable_if_t< ttg::meta::is_void_v< Key >, int > owner () const
 
- Public Member Functions inherited from ttg::TTBase
virtual ~TTBase ()=default
 
bool set_trace_instance (bool value)
 
bool tracing () const
 
template<typename T , typename... Ts>
void trace (const T &t, const Ts &...ts)
 Like ttg::trace(), but only produces tracing output if this->tracing()==true More...
 
bool set_lazy_pull_instance (bool value)
 
bool is_lazy_pull ()
 
std::optional< std::reference_wrapper< const TTBase > > ttg () const
 
const TTBasettg_ptr () const
 
bool is_ttg () const
 
void set_name (const std::string &name)
 Sets the name of this operation. More...
 
const std::string & get_name () const
 Gets the name of this operation. More...
 
std::string get_class_name () const
 Gets the demangled class name (uses RTTI) More...
 
const std::vector< TerminalBase * > & get_inputs () const
 Returns the vector of input terminals. More...
 
const std::vector< TerminalBase * > & get_outputs () const
 Returns the vector of output terminals. More...
 
ttg::TerminalBasein (size_t i)
 Returns a pointer to the i'th input terminal. More...
 
ttg::TerminalBaseout (size_t i)
 Returns a pointer to the i'th output terminal. More...
 
template<std::size_t i>
ttg::TerminalBasein ()
 Returns a pointer to the i'th input terminal ... to make API consistent with TT. More...
 
template<std::size_t i>
ttg::TerminalBaseout ()
 Returns a pointer to the i'th output terminal ... to make API consistent with TT. More...
 
auto get_instance_id () const
 
virtual void release ()
 
bool is_executable () const
 

Static Public Member Functions

static constexpr bool derived_has_cuda_op ()
 
static constexpr bool derived_has_hip_op ()
 
static constexpr bool derived_has_level_zero_op ()
 
static constexpr bool derived_has_device_op ()
 
- Static Public Member Functions inherited from ttg::TTBase
static bool set_trace_all (bool value)
 
static bool set_lazy_pull (bool value)
 
static const std::vector< TerminalBase * > * get_outputs_tls_ptr ()
 Returns this thread's pointer to the vector of output terminals. More...
 

Protected Types

using worldobjT = ::madness::WorldObject< ttT >
 

Protected Member Functions

const auto & get_output_terminals () const
 
template<typename terminalT , std::size_t i, typename Key >
void invoke_pull_terminal (terminalT &in, const Key &key, TTArgs *args)
 
template<std::size_t i, typename Key >
void get_terminal_data (const int owner, const Key &key)
 
template<std::size_t... IS, typename Key = keyT>
void invoke_pull_terminals (std::index_sequence< IS... >, const Key &key, TTArgs *args)
 
template<std::size_t i, typename Key , typename Value >
void set_arg (const Key &key, Value &&value)
 
template<std::size_t i, typename Key , typename Value >
std::enable_if_t<!ttg::meta::is_void_v< Key > &&std::is_void_v< Value >, void > set_arg (const Key &key)
 
template<std::size_t i, typename Key = keyT, typename Value >
std::enable_if_t< ttg::meta::is_void_v< Key > &&!std::is_void_v< std::decay_t< Value > >, void > set_arg (Value &&value)
 
template<std::size_t i, typename Key = keyT, typename Value >
std::enable_if_t< ttg::meta::is_void_v< Key > &&std::is_void_v< Value >, void > set_arg ()
 
template<typename Key , typename... Ts, size_t... Is, size_t... Js>
std::enable_if_t<!ttg::meta::is_void_v< Key >, void > set_args (std::index_sequence< Is... >, std::index_sequence< Js... >, const Key &key, const std::tuple< Ts... > &args)
 
template<typename Key , typename... Ts, size_t... Is>
std::enable_if_t<!ttg::meta::is_void_v< Key >, void > set_args (std::index_sequence< Is... > is, const Key &key, const std::tuple< Ts... > &args)
 
template<typename Key = keyT, typename... Ts, size_t... Is, size_t... Js>
std::enable_if_t< ttg::meta::is_void_v< Key >, void > set_args (std::index_sequence< Is... >, std::index_sequence< Js... >, const std::tuple< Ts... > &args)
 
template<typename Key = keyT, typename... Ts, size_t... Is>
std::enable_if_t< ttg::meta::is_void_v< Key >, void > set_args (std::index_sequence< Is... > is, const std::tuple< Ts... > &args)
 
- Protected Member Functions inherited from ttg::TTBase
void set_input (size_t i, TerminalBase *t)
 
void set_output (size_t i, TerminalBase *t)
 
template<bool out, typename terminalT , std::size_t i, typename setfuncT >
void register_terminal (terminalT &term, const std::string &name, const setfuncT setfunc)
 
template<bool out, std::size_t... IS, typename terminalsT , typename namesT , typename setfuncT >
void register_terminals (std::index_sequence< IS... >, terminalsT &terms, const namesT &names, const setfuncT setfunc)
 
template<typename terminalsT , typename namesT >
void register_input_terminals (terminalsT &terms, const namesT &names)
 
template<typename terminalsT , typename namesT >
void register_output_terminals (terminalsT &terms, const namesT &names)
 
template<std::size_t... IS, typename terminalsT , typename setfuncT >
void set_terminals (std::index_sequence< IS... >, terminalsT &terms, const setfuncT setfunc)
 
template<typename terminalsT , typename setfuncT >
void set_terminals (const terminalsT &terms, const setfuncT setfunc)
 
 TTBase (TTBase &&other)
 
TTBaseoperator= (TTBase &&other)
 
 TTBase (const std::string &name, size_t numins, size_t numouts)
 
void set_outputs_tls_ptr ()
 
void set_outputs_tls_ptr (const std::vector< TerminalBase * > *ptr)
 

Static Protected Member Functions

template<std::size_t i, typename resultT , typename InTuple >
static resultT get (InTuple &&intuple)
 
template<std::size_t i, typename InTuple >
static auto & get (InTuple &&intuple)
 
- Static Protected Member Functions inherited from ttg::TTBase
static const std::vector< TerminalBase * > *& outputs_tls_ptr_accessor ()
 

Static Protected Attributes

static constexpr int numinedges = std::tuple_size_v<input_tuple_type>
 
static constexpr int numins = std::tuple_size_v<actual_input_tuple_type>
 
static constexpr int numouts = std::tuple_size_v<output_terminalsT>
 
struct {
   uint64_t   key_hash = 0
 
   size_t   call_depth = 0
 
threaddata
 

Member Typedef Documentation

◆ input_args_type

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
using ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::input_args_type = actual_input_tuple_type

Definition at line 260 of file ttg.h.

◆ input_edges_type

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
using ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::input_edges_type = ttg::detail::edges_tuple_t<keyT, ttg::meta::decayed_typelist_t<input_tuple_type> >

Definition at line 250 of file ttg.h.

◆ input_refs_full_tuple_type

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
using ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::input_refs_full_tuple_type = ttg::meta::add_glvalue_reference_tuple_t<ttg::meta::void_to_Void_tuple_t<actual_input_tuple_type> >

Definition at line 257 of file ttg.h.

◆ input_refs_tuple_type

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
using ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::input_refs_tuple_type = ttg::meta::drop_void_t<ttg::meta::add_glvalue_reference_tuple_t<input_tuple_type> >

Definition at line 263 of file ttg.h.

◆ input_terminals_type

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
using ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::input_terminals_type = ttg::detail::input_terminals_tuple_t<keyT, input_tuple_type>

Definition at line 249 of file ttg.h.

◆ input_values_full_tuple_type

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
using ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::input_values_full_tuple_type = ttg::meta::void_to_Void_tuple_t<ttg::meta::decayed_typelist_t<actual_input_tuple_type> >

Definition at line 255 of file ttg.h.

◆ input_values_tuple_type

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
using ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::input_values_tuple_type = ttg::meta::drop_void_t<ttg::meta::decayed_typelist_t<input_tuple_type> >

Definition at line 262 of file ttg.h.

◆ key_type

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
using ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::key_type = keyT

Definition at line 197 of file ttg.h.

◆ output_edges_type

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
using ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::output_edges_type = typename ttg::terminals_to_edges<output_terminalsT>::type

Definition at line 267 of file ttg.h.

◆ output_terminals_type

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
using ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::output_terminals_type = output_terminalsT

Definition at line 266 of file ttg.h.

◆ ttT

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
using ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::ttT = TT

Definition at line 196 of file ttg.h.

◆ worldobjT

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
using ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::worldobjT = ::madness::WorldObject<ttT>
protected

Definition at line 236 of file ttg.h.

Constructor & Destructor Documentation

◆ TT() [1/4]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename keymapT = ttg::detail::default_keymap<keyT>, typename priomapT = ttg::detail::default_priomap<keyT>>
ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::TT ( const std::string &  name,
const std::vector< std::string > &  innames,
const std::vector< std::string > &  outnames,
ttg::World  world,
keymapT &&  keymap_ = keymapT(),
priomapT &&  priomap_ = priomapT() 
)
inline

Definition at line 1074 of file ttg.h.

◆ TT() [2/4]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename keymapT = ttg::detail::default_keymap<keyT>, typename priomapT = ttg::detail::default_priomap<keyT>>
ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::TT ( const std::string &  name,
const std::vector< std::string > &  innames,
const std::vector< std::string > &  outnames,
keymapT &&  keymap = keymapT(ttg::default_execution_context()),
priomapT &&  priomap = priomapT() 
)
inline

Definition at line 1101 of file ttg.h.

◆ TT() [3/4]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename keymapT = ttg::detail::default_keymap<keyT>, typename priomapT = ttg::detail::default_priomap<keyT>>
ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::TT ( const input_edges_type inedges,
const output_edges_type outedges,
const std::string &  name,
const std::vector< std::string > &  innames,
const std::vector< std::string > &  outnames,
ttg::World  world,
keymapT &&  keymap_ = keymapT(),
priomapT &&  priomap_ = priomapT() 
)
inline

Definition at line 1108 of file ttg.h.

◆ TT() [4/4]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename keymapT = ttg::detail::default_keymap<keyT>, typename priomapT = ttg::detail::default_priomap<keyT>>
ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::TT ( const input_edges_type inedges,
const output_edges_type outedges,
const std::string &  name,
const std::vector< std::string > &  innames,
const std::vector< std::string > &  outnames,
keymapT &&  keymap = keymapT(ttg::default_execution_context()),
priomapT &&  priomap = priomapT() 
)
inline

Definition at line 1139 of file ttg.h.

◆ ~TT()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
virtual ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::~TT ( )
inlinevirtual

Definition at line 1146 of file ttg.h.

Member Function Documentation

◆ derived_has_cuda_op()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
static constexpr bool ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::derived_has_cuda_op ( )
inlinestaticconstexpr
Returns
true if derivedT::have_cuda_op exists and is defined to true

Definition at line 216 of file ttg.h.

◆ derived_has_device_op()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
static constexpr bool ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::derived_has_device_op ( )
inlinestaticconstexpr
Returns
true if the TT supports device execution

Definition at line 231 of file ttg.h.

◆ derived_has_hip_op()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
static constexpr bool ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::derived_has_hip_op ( )
inlinestaticconstexpr
Returns
true if derivedT::have_hip_op exists and is defined to true

Definition at line 221 of file ttg.h.

◆ derived_has_level_zero_op()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
static constexpr bool ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::derived_has_level_zero_op ( )
inlinestaticconstexpr
Returns
true if derivedT::have_hip_op exists and is defined to true

Definition at line 226 of file ttg.h.

◆ fence()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
void ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::fence ( void  )
inlineoverridevirtual

Waits for the entire TTG associated with this TT to be completed (collective)

This is a collective operation and must be invoked by the main thread on all processes. In the MADNESS implementation it fences the entire world associated with the TTG. If you wish to fence TTGs independently, then give each its own world.

Implements ttg::TTBase.

Definition at line 1220 of file ttg.h.

◆ finalize_argstream() [1/2]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<std::size_t i, bool key_is_void = ttg::meta::is_void_v<keyT>>
std::enable_if_t<key_is_void, void> ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::finalize_argstream ( )
inline

finalizes stream for input i

Definition at line 921 of file ttg.h.

◆ finalize_argstream() [2/2]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<std::size_t i, typename Key = keyT, bool key_is_void = ttg::meta::is_void_v<Key>>
std::enable_if_t<!key_is_void, void> ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::finalize_argstream ( const Key &  key)
inline

finalizes stream for input i

Definition at line 872 of file ttg.h.

◆ get() [1/2]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<std::size_t i, typename resultT , typename InTuple >
static resultT ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::get ( InTuple &&  intuple)
inlinestaticprotected

Definition at line 271 of file ttg.h.

◆ get() [2/2]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<std::size_t i, typename InTuple >
static auto& ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::get ( InTuple &&  intuple)
inlinestaticprotected

Definition at line 275 of file ttg.h.

◆ get_defer_writer()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
bool ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::get_defer_writer ( bool  _)
inline

Definition at line 1296 of file ttg.h.

◆ get_keymap()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
decltype(keymap) const& ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::get_keymap ( ) const
inline

keymap accessor

Returns
the keymap

Definition at line 1300 of file ttg.h.

◆ get_output_terminals()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
const auto& ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::get_output_terminals ( ) const
inlineprotected

Definition at line 284 of file ttg.h.

◆ get_priomap()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
auto ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::get_priomap ( void  ) const
inline

Definition at line 1198 of file ttg.h.

◆ get_terminal_data()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<std::size_t i, typename Key >
void ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::get_terminal_data ( const int  owner,
const Key &  key 
)
inlineprotected

Definition at line 476 of file ttg.h.

◆ get_world()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
ttg::World ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::get_world ( ) const
inlinefinaloverridevirtual
Returns
World in which this lives

Implements ttg::TTBase.

Definition at line 213 of file ttg.h.

◆ in()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<std::size_t i>
std::tuple_element_t<i, input_terminals_type>* ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::in ( )
inline

Returns pointer to input terminal i to facilitate connection — terminal cannot be copied, moved or assigned.

Definition at line 1224 of file ttg.h.

◆ invoke() [1/5]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename Key = keyT>
std::enable_if_t<ttg::meta::is_void_v<Key> && ttg::meta::is_empty_tuple_v<input_values_tuple_type>, void> ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::invoke ( )
inlinevirtual

Manual injection of a task that has no key or arguments.

Reimplemented from ttg::TTBase.

Definition at line 1280 of file ttg.h.

◆ invoke() [2/5]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
void ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::invoke ( )
inlineoverridevirtual

Use this to create a task that takes no data "manually"

Warning
calls ttg::abort() if the derived class TT did not override this; only makes sense to override this if the derived TT uses void for key or data

Reimplemented from ttg::TTBase.

Definition at line 1287 of file ttg.h.

◆ invoke() [3/5]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename Key = keyT>
std::enable_if_t<ttg::meta::is_void_v<Key> && !ttg::meta::is_empty_tuple_v<input_values_tuple_type>, void> ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::invoke ( const input_values_tuple_type args)
inline

Manual injection of a key-free task with all input arguments specified as a tuple.

Definition at line 1253 of file ttg.h.

◆ invoke() [4/5]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename Key = keyT>
std::enable_if_t<!ttg::meta::is_void_v<Key> && ttg::meta::is_empty_tuple_v<input_values_tuple_type>, void> ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::invoke ( const Key &  key)
inline

Manual injection of a task that has no arguments.

Definition at line 1265 of file ttg.h.

◆ invoke() [5/5]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename Key = keyT>
std::enable_if_t<!ttg::meta::is_void_v<Key> && !ttg::meta::is_empty_tuple_v<input_values_tuple_type>, void> ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::invoke ( const Key &  key,
const input_values_tuple_type args 
)
inline

Manual injection of a task with all input arguments specified as a tuple.

Definition at line 1236 of file ttg.h.

◆ invoke_pull_terminal()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename terminalT , std::size_t i, typename Key >
void ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::invoke_pull_terminal ( terminalT &  in,
const Key &  key,
TTArgs *  args 
)
inlineprotected

Definition at line 432 of file ttg.h.

◆ invoke_pull_terminals()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<std::size_t... IS, typename Key = keyT>
void ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::invoke_pull_terminals ( std::index_sequence< IS... >  ,
const Key &  key,
TTArgs *  args 
)
inlineprotected

Definition at line 494 of file ttg.h.

◆ make_executable()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
void ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::make_executable ( )
inlineoverridevirtual

implementation of TTBase::make_executable()

Implements ttg::TTBase.

Definition at line 1209 of file ttg.h.

◆ out()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<std::size_t i>
std::tuple_element_t<i, output_terminalsT>* ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::out ( )
inline

Returns pointer to output terminal for purpose of connection — terminal cannot be copied, moved or assigned.

Definition at line 1230 of file ttg.h.

◆ owner() [1/2]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename Key >
std::enable_if_t<ttg::meta::is_void_v<Key>, int> ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::owner ( ) const
inline

computes the owner of void key

Returns
the owner of void key

Definition at line 1313 of file ttg.h.

◆ owner() [2/2]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename Key >
std::enable_if_t<!ttg::meta::is_void_v<Key>, int> ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::owner ( const Key &  key) const
inline

computes the owner of key key

Parameters
[in]keythe key
Returns
the owner of key

Definition at line 1306 of file ttg.h.

◆ set_arg() [1/4]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<std::size_t i, typename Key = keyT, typename Value >
std::enable_if_t<ttg::meta::is_void_v<Key> && std::is_void_v<Value>, void> ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::set_arg ( )
inlineprotected

Definition at line 686 of file ttg.h.

◆ set_arg() [2/4]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<std::size_t i, typename Key , typename Value >
std::enable_if_t<!ttg::meta::is_void_v<Key> && std::is_void_v<Value>, void> ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::set_arg ( const Key &  key)
inlineprotected

Definition at line 674 of file ttg.h.

◆ set_arg() [3/4]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<std::size_t i, typename Key , typename Value >
void ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::set_arg ( const Key &  key,
Value &&  value 
)
inlineprotected

Definition at line 512 of file ttg.h.

◆ set_arg() [4/4]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<std::size_t i, typename Key = keyT, typename Value >
std::enable_if_t<ttg::meta::is_void_v<Key> && !std::is_void_v<std::decay_t<Value> >, void> ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::set_arg ( Value &&  value)
inlineprotected

Definition at line 680 of file ttg.h.

◆ set_args() [1/4]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename Key , typename... Ts, size_t... Is>
std::enable_if_t<!ttg::meta::is_void_v<Key>, void> ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::set_args ( std::index_sequence< Is... >  is,
const Key &  key,
const std::tuple< Ts... > &  args 
)
inlineprotected

Definition at line 705 of file ttg.h.

◆ set_args() [2/4]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename Key = keyT, typename... Ts, size_t... Is>
std::enable_if_t<ttg::meta::is_void_v<Key>, void> ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::set_args ( std::index_sequence< Is... >  is,
const std::tuple< Ts... > &  args 
)
inlineprotected

Definition at line 725 of file ttg.h.

◆ set_args() [3/4]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename Key , typename... Ts, size_t... Is, size_t... Js>
std::enable_if_t<!ttg::meta::is_void_v<Key>, void> ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::set_args ( std::index_sequence< Is... >  ,
std::index_sequence< Js... >  ,
const Key &  key,
const std::tuple< Ts... > &  args 
)
inlineprotected

Definition at line 694 of file ttg.h.

◆ set_args() [4/4]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename Key = keyT, typename... Ts, size_t... Is, size_t... Js>
std::enable_if_t<ttg::meta::is_void_v<Key>, void> ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::set_args ( std::index_sequence< Is... >  ,
std::index_sequence< Js... >  ,
const std::tuple< Ts... > &  args 
)
inlineprotected

Definition at line 714 of file ttg.h.

◆ set_argstream_size() [1/2]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<std::size_t i, typename Key = keyT, bool key_is_void = ttg::meta::is_void_v<Key>>
std::enable_if_t<!key_is_void, void> ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::set_argstream_size ( const Key &  key,
std::size_t  size 
)
inline

sets stream size for input i and key key

Template Parameters
<i>index of the input terminal to set
Parameters
keythe task identifier
sizepositive integer that specifies the stream size

Definition at line 816 of file ttg.h.

◆ set_argstream_size() [2/2]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<std::size_t i, bool key_is_void = ttg::meta::is_void_v<keyT>>
std::enable_if_t<key_is_void, void> ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::set_argstream_size ( std::size_t  size)
inline

sets stream size for input i

Parameters
sizepositive integer that specifies the stream size

Definition at line 734 of file ttg.h.

◆ set_defer_writer()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
void ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::set_defer_writer ( bool  _)
inline

Definition at line 1294 of file ttg.h.

◆ set_input_reducer() [1/2]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<std::size_t i, typename Reducer >
void ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::set_input_reducer ( Reducer &&  reducer)
inline

define the reducer function to be called when additional inputs are received on a streaming terminal

Template Parameters
<i>the index of the input terminal that is used as a streaming terminal
Parameters
[in]reducera function of prototype void(input_type<i> &a, const input_type<i> &b) that function should aggregate b into a

Definition at line 1175 of file ttg.h.

◆ set_input_reducer() [2/2]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<std::size_t i, typename Reducer >
void ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::set_input_reducer ( Reducer &&  reducer,
std::size_t  size 
)
inline

define the reducer function to be called when additional inputs are received on a streaming terminal

Template Parameters
<i>the index of the input terminal that is used as a streaming terminal
Parameters
[in]reducera function of prototype void(input_type<i> &a, const input_type<i> &b) that function should aggregate b into a
[in]sizethe default number of inputs that are received in this streaming terminal, for each task

Definition at line 1188 of file ttg.h.

◆ set_keymap()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename Keymap >
void ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::set_keymap ( Keymap &&  km)
inline

Definition at line 1194 of file ttg.h.

◆ set_priomap()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename Priomap >
void ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::set_priomap ( Priomap &&  pm)
inline

Set the priority map, mapping a Key to an integral value. Higher values indicate higher priority. The default priority is 0, higher values are treated as high priority tasks in the MADNESS backend.

Definition at line 1204 of file ttg.h.

◆ set_static_argstream_size()

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<std::size_t i>
void ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::set_static_argstream_size ( std::size_t  size)
inline

Definition at line 795 of file ttg.h.

Member Data Documentation

◆ call_depth

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
size_t ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::call_depth = 0

Definition at line 245 of file ttg.h.

◆ key_hash

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
uint64_t ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::key_hash = 0

Definition at line 244 of file ttg.h.

◆ numinedges

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
constexpr int ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::numinedges = std::tuple_size_v<input_tuple_type>
staticconstexprprotected

Definition at line 238 of file ttg.h.

◆ numins

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
constexpr int ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::numins = std::tuple_size_v<actual_input_tuple_type>
staticconstexprprotected

Definition at line 239 of file ttg.h.

◆ numouts

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
constexpr int ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::numouts = std::tuple_size_v<output_terminalsT>
staticconstexprprotected

Definition at line 240 of file ttg.h.

◆ 

__thread { ... } ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::threaddata

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