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 188 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)
 
template<typename Constraint >
void add_constraint (Constraint &&c)
 
template<typename Constraint , typename Mapper >
void add_constraint (std::shared_ptr< Constraint > c, Mapper &&map)
 
template<typename Constraint , typename Mapper >
void add_constraint (Constraint c, Mapper &&map)
 
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 261 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 251 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 258 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 264 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 250 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 256 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 263 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 198 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 268 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 267 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 197 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 237 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 1075 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 1102 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 1109 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 1140 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 1147 of file ttg.h.

Member Function Documentation

◆ add_constraint() [1/3]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename Constraint >
void ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::add_constraint ( Constraint &&  c)
inline

add a constraint the constraint must provide a valid override of check_key(key)

Definition at line 1212 of file ttg.h.

◆ add_constraint() [2/3]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename Constraint , typename Mapper >
void ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::add_constraint ( Constraint  c,
Mapper &&  map 
)
inline

Definition at line 1222 of file ttg.h.

◆ add_constraint() [3/3]

template<typename keyT , typename output_terminalsT , typename derivedT , typename input_valueTs >
template<typename Constraint , typename Mapper >
void ttg_madness::TT< keyT, output_terminalsT, derivedT, input_valueTs >::add_constraint ( std::shared_ptr< Constraint >  c,
Mapper &&  map 
)
inline

Definition at line 1217 of file ttg.h.

◆ 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 217 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 232 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 222 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 227 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 1238 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 922 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 873 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 272 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 276 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 1314 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 1318 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 285 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 1199 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 477 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 214 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 1242 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 1298 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 1305 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 1271 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 1283 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 1254 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 433 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 495 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 1227 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 1248 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 1331 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 1324 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 687 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 675 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 513 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 681 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 706 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 726 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 695 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 715 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 817 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 735 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 1312 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 1176 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 1189 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 1195 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 1205 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 796 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 246 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 245 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 239 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 240 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 241 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: