MADNESS 0.10.1
Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
madness::WorldContainerImpl< keyT, valueT, hashfunT > Class Template Reference

Internal implementation of distributed container to facilitate shallow copy. More...

#include <worlddc.h>

Inheritance diagram for madness::WorldContainerImpl< keyT, valueT, hashfunT >:
Inheritance graph
[legend]
Collaboration diagram for madness::WorldContainerImpl< keyT, valueT, hashfunT >:
Collaboration graph
[legend]

Classes

struct  P2Op
 

Public Types

typedef internal_containerT::accessor accessor
 
typedef internal_containerT::const_accessor const_accessor
 
typedef WorldContainerIterator< internal_const_iteratorT > const_iterator
 
typedef WorldContainerIterator< internal_const_iteratorT > const_iteratorT
 
typedef const pairT const_pairT
 
typedef WorldContainerImpl< keyT, valueT, hashfunT > implT
 
typedef internal_containerT::const_iterator internal_const_iteratorT
 
typedef ConcurrentHashMap< keyT, valueT, hashfunT > internal_containerT
 
typedef internal_containerT::iterator internal_iteratorT
 
typedef WorldContainerIterator< internal_iteratorT > iterator
 
typedef WorldContainerIterator< internal_iteratorT > iteratorT
 
typedef std::pair< const keyT, valueT > pairT
 
- Public Types inherited from madness::WorldObject< WorldContainerImpl< keyT, valueT, hashfunT > >
typedef WorldObject< WorldContainerImpl< keyT, valueT, hashfunT > > objT
 

Public Member Functions

 WorldContainerImpl (World &world, const std::shared_ptr< WorldDCPmapInterface< keyT > > &pm, const hashfunT &hf)
 
virtual ~WorldContainerImpl ()
 
iterator begin ()
 
const_iterator begin () const
 
void clear ()
 
void do_replicate (World &world)
 
iterator end ()
 
const_iterator end () const
 
void erase (const keyT &key)
 
template<typename InIter >
void erase (InIter first, InIter last)
 
template<typename InIter >
void erase (InIter it)
 
bool find (accessor &acc, const keyT &key)
 
Future< iterator > find (const keyT &key)
 
Future< const_iterator > find (const keyT &key) const
 
bool find (const_accessor &acc, const keyT &key) const
 
const hashfunT & get_hash () const
 
std::shared_ptr< WorldDCPmapInterface< keyT > > & get_pmap ()
 
const std::shared_ptr< WorldDCPmapInterface< keyT > > & get_pmap () const
 
void insert (const pairT &datum)
 
bool insert_acc (accessor &acc, const keyT &key)
 
void insert_batch (const std::vector< pairT > &boxes)
 
bool insert_const_acc (const_accessor &acc, const keyT &key)
 
bool is_local (const keyT &key) const
 
template<typename memfunT >
 itemfun (const keyT &key, memfunT memfun)
 
template<typename memfunT , typename arg1T >
 itemfun (const keyT &key, memfunT memfun, const arg1T &arg1)
 
template<typename memfunT , typename arg1T , typename arg2T >
 itemfun (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2)
 
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T >
 itemfun (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3)
 
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T >
 itemfun (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3, const arg4T &arg4)
 
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T , typename arg5T >
 itemfun (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3, const arg4T &arg4, const arg5T &arg5)
 
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T , typename arg5T , typename arg6T >
 itemfun (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3, const arg4T &arg4, const arg5T &arg5, const arg6T &arg6)
 
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T , typename arg5T , typename arg6T , typename arg7T >
 itemfun (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3, const arg4T &arg4, const arg5T &arg5, const arg6T &arg6, const arg7T &arg7)
 
ProcessID owner (const keyT &key) const
 
bool probe (const keyT &key) const
 
void redistribute_coalesced_phase1 (const std::shared_ptr< WorldDCPmapInterface< keyT > > &newpmap)
 
void redistribute_coalesced_phase2 (std::size_t cap_boxes, bool rotate)
 
void redistribute_phase1 (const std::shared_ptr< WorldDCPmapInterface< keyT > > &newpmap)
 
void redistribute_phase2 ()
 
void redistribute_phase3 ()
 
void replicate (bool fence)
 
void replicate_on_hosts (bool fence)
 
void reset_pmap_to_local ()
 
std::size_t size () const
 
- Public Member Functions inherited from madness::WorldObject< WorldContainerImpl< keyT, valueT, hashfunT > >
 WorldObject (const WorldObject &other)
 
 WorldObject (World &world)
 Constructor that associates an object (via the derived class) with a globally unique ID.
 
virtual ~WorldObject ()
 
WorldObject & operator= (const WorldObject &)=delete
 
detail::task_result_type< memfnT >::futureT send (ProcessID dest, memfnT memfn) const
 
detail::task_result_type< memfnT >::futureT send (ProcessID dest, memfnT memfn, const a1T &a1) const
 
detail::task_result_type< memfnT >::futureT send (ProcessID dest, memfnT memfn, const a1T &a1, const a2T &a2) const
 
detail::task_result_type< memfnT >::futureT send (ProcessID dest, memfnT memfn, const a1T &a1, const a2T &a2, const a3T &a3) const
 
detail::task_result_type< memfnT >::futureT send (ProcessID dest, memfnT memfn, const a1T &a1, const a2T &a2, const a3T &a3, const a4T &a4) const
 
detail::task_result_type< memfnT >::futureT send (ProcessID dest, memfnT memfn, const a1T &a1, const a2T &a2, const a3T &a3, const a4T &a4, const a5T &a5) const
 
detail::task_result_type< memfnT >::futureT send (ProcessID dest, memfnT memfn, const a1T &a1, const a2T &a2, const a3T &a3, const a4T &a4, const a5T &a5, const a6T &a6) const
 
detail::task_result_type< memfnT >::futureT send (ProcessID dest, memfnT memfn, const a1T &a1, const a2T &a2, const a3T &a3, const a4T &a4, const a5T &a5, const a6T &a6, const a7T &a7) const
 
detail::task_result_type< memfnT >::futureT send (ProcessID dest, memfnT memfn, const a1T &a1, const a2T &a2, const a3T &a3, const a4T &a4, const a5T &a5, const a6T &a6, const a7T &a7, const a8T &a8) const
 
detail::task_result_type< memfnT >::futureT send (ProcessID dest, memfnT memfn, const a1T &a1, const a2T &a2, const a3T &a3, const a4T &a4, const a5T &a5, const a6T &a6, const a7T &a7, const a8T &a8, const a9T &a9) const
 
detail::task_result_type< memfnT >::futureT task (ProcessID dest, memfnT memfn, const a1T &a1, const a2T &a2, const a3T &a3, const a4T &a4, const a5T &a5, const a6T &a6, const a7T &a7, const a8T &a8, const a9T &a9, const TaskAttributes &attr=TaskAttributes()) const
 Sends task to derived class method returnT (this->*memfn)(a1,a2,a3,a4,a5,a6,a7,a8,a9).
 
detail::task_result_type< memfnT >::futureT task (ProcessID dest, memfnT memfn, const a1T &a1, const a2T &a2, const a3T &a3, const a4T &a4, const a5T &a5, const a6T &a6, const a7T &a7, const a8T &a8, const TaskAttributes &attr=TaskAttributes()) const
 Sends task to derived class method returnT (this->*memfn)(a1,a2,a3,a4,a5,a6,a7,a8).
 
detail::task_result_type< memfnT >::futureT task (ProcessID dest, memfnT memfn, const a1T &a1, const a2T &a2, const a3T &a3, const a4T &a4, const a5T &a5, const a6T &a6, const a7T &a7, const TaskAttributes &attr=TaskAttributes()) const
 Sends task to derived class method returnT (this->*memfn)(a1,a2,a3,a4,a5,a6,a7).
 
detail::task_result_type< memfnT >::futureT task (ProcessID dest, memfnT memfn, const a1T &a1, const a2T &a2, const a3T &a3, const a4T &a4, const a5T &a5, const a6T &a6, const TaskAttributes &attr=TaskAttributes()) const
 Sends task to derived class method returnT (this->*memfn)(a1,a2,a3,a4,a5,a6).
 
detail::task_result_type< memfnT >::futureT task (ProcessID dest, memfnT memfn, const a1T &a1, const a2T &a2, const a3T &a3, const a4T &a4, const a5T &a5, const TaskAttributes &attr=TaskAttributes()) const
 Sends task to derived class method returnT (this->*memfn)(a1,a2,a3,a4,a5).
 
detail::task_result_type< memfnT >::futureT task (ProcessID dest, memfnT memfn, const a1T &a1, const a2T &a2, const a3T &a3, const a4T &a4, const TaskAttributes &attr=TaskAttributes()) const
 Sends task to derived class method returnT (this->*memfn)(a1,a2,a3,a4).
 
detail::task_result_type< memfnT >::futureT task (ProcessID dest, memfnT memfn, const a1T &a1, const a2T &a2, const a3T &a3, const TaskAttributes &attr=TaskAttributes()) const
 Sends task to derived class method returnT (this->*memfn)(a1,a2,a3).
 
detail::task_result_type< memfnT >::futureT task (ProcessID dest, memfnT memfn, const a1T &a1, const a2T &a2, const TaskAttributes &attr=TaskAttributes()) const
 Sends task to derived class method returnT (this->*memfn)(a1,a2).
 
detail::task_result_type< memfnT >::futureT task (ProcessID dest, memfnT memfn, const a1T &a1, const TaskAttributes &attr=TaskAttributes()) const
 Sends task to derived class method returnT (this->*memfn)(a1).
 
detail::task_result_type< memfnT >::futureT task (ProcessID dest, memfnT memfn, const TaskAttributes &attr=TaskAttributes()) const
 Sends task to derived class method returnT (this->*memfn)().
 
- Public Member Functions inherited from madness::WorldObjectBase
virtual ~WorldObjectBase ()
 
World & get_world () const
 
World & get_world_noexcept () const noexcept
 Get the world to which this object belongs, without risking a throw.
 
const uniqueidT & id () const
 Returns the globally unique object ID.
 
bool world_is_alive () const noexcept
 Reports whether the world to which this object belongs still exists.
 
- Public Member Functions inherited from madness::WorldDCRedistributeInterface< keyT >
virtual ~WorldDCRedistributeInterface ()
 

Private Member Functions

 WorldContainerImpl ()
 
void find_const_failure_handler (const RemoteReference< FutureImpl< const_iterator > > &ref)
 Handles unsuccessful const find response.
 
void find_const_handler (ProcessID requestor, const keyT &key, const RemoteReference< FutureImpl< const_iterator > > &ref)
 Handles const find request.
 
void find_const_success_handler (const RemoteReference< FutureImpl< const_iterator > > &ref, const pairT &datum)
 Handles successful const find response.
 
void find_failure_handler (const RemoteReference< FutureImpl< iterator > > &ref)
 Handles unsuccessful find response.
 
void find_handler (ProcessID requestor, const keyT &key, const RemoteReference< FutureImpl< iterator > > &ref)
 Handles find request.
 
void find_success_handler (const RemoteReference< FutureImpl< iterator > > &ref, const pairT &datum)
 Handles successful find response.
 

Private Attributes

std::map< ProcessID, std::vector< keyT > > coalesced_move_
 Temporary: keys to move, bucketed by destination (coalesced redistribute)
 
internal_containerT local
 Locally owned data.
 
const ProcessID me
 My MPI rank.
 
std::vector< keyT > * move_list
 Tempoary used to record data that needs redistributing.
 
std::shared_ptr< WorldDCPmapInterface< keyT > > pmap
 Function/class to map from keys to owning process.
 
bool rank_replication_complete_ = false
 True if the last replicate() completed and no reset followed.
 

Friends

class WorldContainer< keyT, valueT, hashfunT >
 

Additional Inherited Members

- Protected Member Functions inherited from madness::WorldObject< WorldContainerImpl< keyT, valueT, hashfunT > >
void process_pending ()
 To be called from derived constructor to process pending messages.
 
- Protected Member Functions inherited from madness::WorldObjectBase
 WorldObjectBase (const WorldObjectBase &other)
 Copy constructor; produces an unregistered object.
 
 WorldObjectBase (World &w)
 Construct a new WorldObjectBase.
 
World & get_world_unchecked () const noexcept
 Unchecked access to the memoized world reference.
 
template<typename DerivedT >
void register_self (DerivedT *this_ptr)
 Registers this object with its world, making it globally addressable.
 

Detailed Description

template<typename keyT, typename valueT, typename hashfunT>
class madness::WorldContainerImpl< keyT, valueT, hashfunT >

Internal implementation of distributed container to facilitate shallow copy.

Member Typedef Documentation

◆ accessor

template<typename keyT , typename valueT , typename hashfunT >
typedef internal_containerT::accessor madness::WorldContainerImpl< keyT, valueT, hashfunT >::accessor

◆ const_accessor

template<typename keyT , typename valueT , typename hashfunT >
typedef internal_containerT::const_accessor madness::WorldContainerImpl< keyT, valueT, hashfunT >::const_accessor

◆ const_iterator

template<typename keyT , typename valueT , typename hashfunT >
typedef WorldContainerIterator<internal_const_iteratorT> madness::WorldContainerImpl< keyT, valueT, hashfunT >::const_iterator

◆ const_iteratorT

template<typename keyT , typename valueT , typename hashfunT >
typedef WorldContainerIterator<internal_const_iteratorT> madness::WorldContainerImpl< keyT, valueT, hashfunT >::const_iteratorT

◆ const_pairT

template<typename keyT , typename valueT , typename hashfunT >
typedef const pairT madness::WorldContainerImpl< keyT, valueT, hashfunT >::const_pairT

◆ implT

template<typename keyT , typename valueT , typename hashfunT >
typedef WorldContainerImpl<keyT, valueT, hashfunT> madness::WorldContainerImpl< keyT, valueT, hashfunT >::implT

◆ internal_const_iteratorT

template<typename keyT , typename valueT , typename hashfunT >
typedef internal_containerT::const_iterator madness::WorldContainerImpl< keyT, valueT, hashfunT >::internal_const_iteratorT

◆ internal_containerT

template<typename keyT , typename valueT , typename hashfunT >
typedef ConcurrentHashMap<keyT, valueT, hashfunT> madness::WorldContainerImpl< keyT, valueT, hashfunT >::internal_containerT

◆ internal_iteratorT

template<typename keyT , typename valueT , typename hashfunT >
typedef internal_containerT::iterator madness::WorldContainerImpl< keyT, valueT, hashfunT >::internal_iteratorT

◆ iterator

template<typename keyT , typename valueT , typename hashfunT >
typedef WorldContainerIterator<internal_iteratorT> madness::WorldContainerImpl< keyT, valueT, hashfunT >::iterator

◆ iteratorT

template<typename keyT , typename valueT , typename hashfunT >
typedef WorldContainerIterator<internal_iteratorT> madness::WorldContainerImpl< keyT, valueT, hashfunT >::iteratorT

◆ pairT

template<typename keyT , typename valueT , typename hashfunT >
typedef std::pair<const keyT, valueT> madness::WorldContainerImpl< keyT, valueT, hashfunT >::pairT

Constructor & Destructor Documentation

◆ WorldContainerImpl() [1/2]

template<typename keyT , typename valueT , typename hashfunT >
madness::WorldContainerImpl< keyT, valueT, hashfunT >::WorldContainerImpl ( )
private

◆ WorldContainerImpl() [2/2]

template<typename keyT , typename valueT , typename hashfunT >
madness::WorldContainerImpl< keyT, valueT, hashfunT >::WorldContainerImpl ( World &  world,
const std::shared_ptr< WorldDCPmapInterface< keyT > > &  pm,
const hashfunT &  hf 
)
inline

◆ ~WorldContainerImpl()

template<typename keyT , typename valueT , typename hashfunT >
virtual madness::WorldContainerImpl< keyT, valueT, hashfunT >::~WorldContainerImpl ( )
inlinevirtual

Member Function Documentation

◆ begin() [1/2]

template<typename keyT , typename valueT , typename hashfunT >
iterator madness::WorldContainerImpl< keyT, valueT, hashfunT >::begin ( )
inline

◆ begin() [2/2]

template<typename keyT , typename valueT , typename hashfunT >
const_iterator madness::WorldContainerImpl< keyT, valueT, hashfunT >::begin ( ) const
inline

◆ clear()

template<typename keyT , typename valueT , typename hashfunT >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::clear ( )
inline

◆ do_replicate()

template<typename keyT , typename valueT , typename hashfunT >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::do_replicate ( World &  world)
inline

◆ end() [1/2]

template<typename keyT , typename valueT , typename hashfunT >
iterator madness::WorldContainerImpl< keyT, valueT, hashfunT >::end ( )
inline

◆ end() [2/2]

template<typename keyT , typename valueT , typename hashfunT >
const_iterator madness::WorldContainerImpl< keyT, valueT, hashfunT >::end ( ) const
inline

◆ erase() [1/3]

template<typename keyT , typename valueT , typename hashfunT >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::erase ( const keyT &  key)
inline

◆ erase() [2/3]

template<typename keyT , typename valueT , typename hashfunT >
template<typename InIter >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::erase ( InIter  first,
InIter  last 
)
inline

◆ erase() [3/3]

template<typename keyT , typename valueT , typename hashfunT >
template<typename InIter >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::erase ( InIter  it)
inline

◆ find() [1/4]

template<typename keyT , typename valueT , typename hashfunT >
bool madness::WorldContainerImpl< keyT, valueT, hashfunT >::find ( accessor &  acc,
const keyT &  key 
)
inline

◆ find() [2/4]

template<typename keyT , typename valueT , typename hashfunT >
Future< iterator > madness::WorldContainerImpl< keyT, valueT, hashfunT >::find ( const keyT &  key)
inline

◆ find() [3/4]

template<typename keyT , typename valueT , typename hashfunT >
Future< const_iterator > madness::WorldContainerImpl< keyT, valueT, hashfunT >::find ( const keyT &  key) const
inline

◆ find() [4/4]

template<typename keyT , typename valueT , typename hashfunT >
bool madness::WorldContainerImpl< keyT, valueT, hashfunT >::find ( const_accessor &  acc,
const keyT &  key 
) const
inline

◆ find_const_failure_handler()

template<typename keyT , typename valueT , typename hashfunT >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::find_const_failure_handler ( const RemoteReference< FutureImpl< const_iterator > > &  ref)
inlineprivate

◆ find_const_handler()

template<typename keyT , typename valueT , typename hashfunT >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::find_const_handler ( ProcessID  requestor,
const keyT &  key,
const RemoteReference< FutureImpl< const_iterator > > &  ref 
)
inlineprivate

◆ find_const_success_handler()

template<typename keyT , typename valueT , typename hashfunT >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::find_const_success_handler ( const RemoteReference< FutureImpl< const_iterator > > &  ref,
const pairT &  datum 
)
inlineprivate

Handles successful const find response.

References madness::f, and madness::FutureImpl< T >::get().

◆ find_failure_handler()

template<typename keyT , typename valueT , typename hashfunT >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::find_failure_handler ( const RemoteReference< FutureImpl< iterator > > &  ref)
inlineprivate

◆ find_handler()

template<typename keyT , typename valueT , typename hashfunT >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::find_handler ( ProcessID  requestor,
const keyT &  key,
const RemoteReference< FutureImpl< iterator > > &  ref 
)
inlineprivate

◆ find_success_handler()

template<typename keyT , typename valueT , typename hashfunT >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::find_success_handler ( const RemoteReference< FutureImpl< iterator > > &  ref,
const pairT &  datum 
)
inlineprivate

Handles successful find response.

References madness::f, and madness::FutureImpl< T >::get().

◆ get_hash()

template<typename keyT , typename valueT , typename hashfunT >
const hashfunT & madness::WorldContainerImpl< keyT, valueT, hashfunT >::get_hash ( ) const
inline

◆ get_pmap() [1/2]

template<typename keyT , typename valueT , typename hashfunT >
std::shared_ptr< WorldDCPmapInterface< keyT > > & madness::WorldContainerImpl< keyT, valueT, hashfunT >::get_pmap ( )
inline

◆ get_pmap() [2/2]

template<typename keyT , typename valueT , typename hashfunT >
const std::shared_ptr< WorldDCPmapInterface< keyT > > & madness::WorldContainerImpl< keyT, valueT, hashfunT >::get_pmap ( ) const
inline

◆ insert()

template<typename keyT , typename valueT , typename hashfunT >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::insert ( const pairT &  datum)
inline

◆ insert_acc()

template<typename keyT , typename valueT , typename hashfunT >
bool madness::WorldContainerImpl< keyT, valueT, hashfunT >::insert_acc ( accessor &  acc,
const keyT &  key 
)
inline

◆ insert_batch()

template<typename keyT , typename valueT , typename hashfunT >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::insert_batch ( const std::vector< pairT > &  boxes)
inline

AM target of the coalesced redistribute: bulk-insert boxes this rank owns under the already-adopted new pmap. Keys are disjoint from those this rank is concurrently erasing (their new owner != me), so per-bucket locking suffices. See redistribute_coalesced_phase2.

References madness::ConcurrentHashMap< keyT, valueT, hashfunT >::insert(), and madness::WorldContainerImpl< keyT, valueT, hashfunT >::local.

◆ insert_const_acc()

template<typename keyT , typename valueT , typename hashfunT >
bool madness::WorldContainerImpl< keyT, valueT, hashfunT >::insert_const_acc ( const_accessor &  acc,
const keyT &  key 
)
inline

◆ is_local()

template<typename keyT , typename valueT , typename hashfunT >
bool madness::WorldContainerImpl< keyT, valueT, hashfunT >::is_local ( const keyT &  key) const
inline

◆ itemfun() [1/8]

template<typename keyT , typename valueT , typename hashfunT >
template<typename memfunT >
madness::WorldContainerImpl< keyT, valueT, hashfunT >::itemfun ( const keyT &  key,
memfunT  memfun 
)
inline

◆ itemfun() [2/8]

template<typename keyT , typename valueT , typename hashfunT >
template<typename memfunT , typename arg1T >
madness::WorldContainerImpl< keyT, valueT, hashfunT >::itemfun ( const keyT &  key,
memfunT  memfun,
const arg1T &  arg1 
)
inline

◆ itemfun() [3/8]

template<typename keyT , typename valueT , typename hashfunT >
template<typename memfunT , typename arg1T , typename arg2T >
madness::WorldContainerImpl< keyT, valueT, hashfunT >::itemfun ( const keyT &  key,
memfunT  memfun,
const arg1T &  arg1,
const arg2T &  arg2 
)
inline

◆ itemfun() [4/8]

template<typename keyT , typename valueT , typename hashfunT >
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T >
madness::WorldContainerImpl< keyT, valueT, hashfunT >::itemfun ( const keyT &  key,
memfunT  memfun,
const arg1T &  arg1,
const arg2T &  arg2,
const arg3T &  arg3 
)
inline

◆ itemfun() [5/8]

template<typename keyT , typename valueT , typename hashfunT >
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T >
madness::WorldContainerImpl< keyT, valueT, hashfunT >::itemfun ( const keyT &  key,
memfunT  memfun,
const arg1T &  arg1,
const arg2T &  arg2,
const arg3T &  arg3,
const arg4T &  arg4 
)
inline

◆ itemfun() [6/8]

template<typename keyT , typename valueT , typename hashfunT >
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T , typename arg5T >
madness::WorldContainerImpl< keyT, valueT, hashfunT >::itemfun ( const keyT &  key,
memfunT  memfun,
const arg1T &  arg1,
const arg2T &  arg2,
const arg3T &  arg3,
const arg4T &  arg4,
const arg5T &  arg5 
)
inline

◆ itemfun() [7/8]

template<typename keyT , typename valueT , typename hashfunT >
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T , typename arg5T , typename arg6T >
madness::WorldContainerImpl< keyT, valueT, hashfunT >::itemfun ( const keyT &  key,
memfunT  memfun,
const arg1T &  arg1,
const arg2T &  arg2,
const arg3T &  arg3,
const arg4T &  arg4,
const arg5T &  arg5,
const arg6T &  arg6 
)
inline

◆ itemfun() [8/8]

template<typename keyT , typename valueT , typename hashfunT >
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T , typename arg5T , typename arg6T , typename arg7T >
madness::WorldContainerImpl< keyT, valueT, hashfunT >::itemfun ( const keyT &  key,
memfunT  memfun,
const arg1T &  arg1,
const arg2T &  arg2,
const arg3T &  arg3,
const arg4T &  arg4,
const arg5T &  arg5,
const arg6T &  arg6,
const arg7T &  arg7 
)
inline

◆ owner()

template<typename keyT , typename valueT , typename hashfunT >
ProcessID madness::WorldContainerImpl< keyT, valueT, hashfunT >::owner ( const keyT &  key) const
inline

◆ probe()

template<typename keyT , typename valueT , typename hashfunT >
bool madness::WorldContainerImpl< keyT, valueT, hashfunT >::probe ( const keyT &  key) const
inline

◆ redistribute_coalesced_phase1()

template<typename keyT , typename valueT , typename hashfunT >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::redistribute_coalesced_phase1 ( const std::shared_ptr< WorldDCPmapInterface< keyT > > &  newpmap)
inline

◆ redistribute_coalesced_phase2()

template<typename keyT , typename valueT , typename hashfunT >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::redistribute_coalesced_phase2 ( std::size_t  cap_boxes,
bool  rotate 
)
inline

◆ redistribute_phase1()

template<typename keyT , typename valueT , typename hashfunT >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::redistribute_phase1 ( const std::shared_ptr< WorldDCPmapInterface< keyT > > &  newpmap)
inlinevirtual

◆ redistribute_phase2()

template<typename keyT , typename valueT , typename hashfunT >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::redistribute_phase2 ( )
inlinevirtual

◆ redistribute_phase3()

template<typename keyT , typename valueT , typename hashfunT >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::redistribute_phase3 ( )
inlinevirtual

◆ replicate()

template<typename keyT , typename valueT , typename hashfunT >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::replicate ( bool  fence)
inline

Replicates this WorldContainer on every ProcessID.

This call is collective, and every rank must call it in the same order. If no rank called clear(), reset the pmap, or redistributed after the last completed call, this call sends no data. A requested fence still occurs. This call does not reconcile replicas, so per-key changes must be the same on every rank.

A rank runs queued tasks while it waits in a broadcast. These tasks must not change this container until the call returns. If a task erases a key on the root, MADNESS_CHECK throws on that rank, and the other ranks wait.

References madness::WorldContainerImpl< keyT, valueT, hashfunT >::do_replicate(), madness::WorldGopInterface::fence(), madness::WorldObjectBase::get_world(), madness::World::gop, MADNESS_CHECK, madness::WorldGopInterface::min(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::pmap, madness::WorldContainerImpl< keyT, valueT, hashfunT >::rank_replication_complete_, madness::RankReplicated, and madness::WorldObjectBase::world.

◆ replicate_on_hosts()

template<typename keyT , typename valueT , typename hashfunT >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::replicate_on_hosts ( bool  fence)
inline

◆ reset_pmap_to_local()

template<typename keyT , typename valueT , typename hashfunT >
void madness::WorldContainerImpl< keyT, valueT, hashfunT >::reset_pmap_to_local ( )
inline

◆ size()

template<typename keyT , typename valueT , typename hashfunT >
std::size_t madness::WorldContainerImpl< keyT, valueT, hashfunT >::size ( ) const
inlinevirtual

Friends And Related Symbol Documentation

◆ WorldContainer< keyT, valueT, hashfunT >

template<typename keyT , typename valueT , typename hashfunT >
friend class WorldContainer< keyT, valueT, hashfunT >
friend

Member Data Documentation

◆ coalesced_move_

template<typename keyT , typename valueT , typename hashfunT >
std::map<ProcessID, std::vector<keyT> > madness::WorldContainerImpl< keyT, valueT, hashfunT >::coalesced_move_
private

◆ local

template<typename keyT , typename valueT , typename hashfunT >
internal_containerT madness::WorldContainerImpl< keyT, valueT, hashfunT >::local
private

Locally owned data.

Referenced by madness::WorldContainerImpl< keyT, valueT, hashfunT >::begin(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::begin(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::clear(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::end(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::end(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::erase(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::find(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::find(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::find(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::find(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::find_const_failure_handler(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::find_const_handler(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::find_handler(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::get_hash(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::insert(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::insert_acc(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::insert_batch(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::insert_const_acc(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::itemfun(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::itemfun(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::itemfun(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::itemfun(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::itemfun(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::itemfun(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::itemfun(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::itemfun(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::probe(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::redistribute_coalesced_phase1(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::redistribute_coalesced_phase2(), madness::WorldContainerImpl< keyT, valueT, hashfunT >::redistribute_phase1(), and madness::WorldContainerImpl< keyT, valueT, hashfunT >::size().

◆ me

template<typename keyT , typename valueT , typename hashfunT >
const ProcessID madness::WorldContainerImpl< keyT, valueT, hashfunT >::me
private

◆ move_list

template<typename keyT , typename valueT , typename hashfunT >
std::vector<keyT>* madness::WorldContainerImpl< keyT, valueT, hashfunT >::move_list
private

◆ pmap

template<typename keyT , typename valueT , typename hashfunT >
std::shared_ptr<WorldDCPmapInterface<keyT> > madness::WorldContainerImpl< keyT, valueT, hashfunT >::pmap
private

◆ rank_replication_complete_

template<typename keyT , typename valueT , typename hashfunT >
bool madness::WorldContainerImpl< keyT, valueT, hashfunT >::rank_replication_complete_ = false
private

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