MADNESS 0.10.1
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 >:
Collaboration diagram for madness::WorldContainerImpl< keyT, valueT, hashfunT >:

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

Referenced by WorldContainerImpl().

◆ 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

References pmap.

Member Function Documentation

◆ begin() [1/2]

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

References local.

Referenced by do_replicate(), and replicate_on_hosts().

◆ begin() [2/2]

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

References local.

◆ clear()

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

References local, and rank_replication_complete_.

Referenced by replicate_on_hosts().

◆ 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

References local.

◆ 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

References erase().

◆ erase() [3/3]

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

References end(), erase(), and MADNESS_ASSERT.

◆ find() [1/4]

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

References local, me, and owner().

◆ find() [2/4]

◆ find() [3/4]

◆ 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

References local, me, and owner().

◆ 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

Handles unsuccessful const find response.

References madness::f, and local.

Referenced by find_const_handler().

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

Referenced by find_const_handler().

◆ 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

Handles unsuccessful find response.

References end(), and madness::f.

Referenced by find_handler().

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

Referenced by find_handler().

◆ get_hash()

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

References local.

◆ get_pmap() [1/2]

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

References pmap.

◆ 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

References pmap.

◆ insert()

◆ insert_acc()

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

References local, MADNESS_ASSERT, me, and owner().

◆ 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 local.

Referenced by redistribute_coalesced_phase2().

◆ 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

References local, MADNESS_ASSERT, me, and owner().

◆ is_local()

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

References me, and owner().

◆ 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

References itemfun(), and local.

◆ 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

References itemfun(), and local.

◆ 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

References itemfun(), and local.

◆ 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

References itemfun(), and local.

◆ 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

References itemfun(), and local.

◆ 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

References itemfun(), and local.

◆ 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

References itemfun(), and local.

◆ 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

References local, me, and owner().

◆ 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

phase1: adopt newpmap (callback swap as in replicate()) and bucket the keys to move by destination. Quiescent window required.

References coalesced_move_, d, local, me, owner(), pmap, and rank_replication_complete_.

◆ 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

phase2: per destination, chunk the key list (at most cap_boxes per chunk), erase each box after copying it into the batch, send one insert_batch AM per chunk.

References coalesced_move_, d, insert_batch(), local, and madness::WorldObject< WorldContainerImpl< keyT, valueT, hashfunT > >::task().

◆ 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 do_replicate(), madness::WorldObjectBase::get_world(), MADNESS_CHECK, pmap, 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

Implements madness::WorldDCRedistributeInterface< keyT >.

References local.

Referenced by do_replicate().

◆ 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

Temporary: keys to move, bucketed by destination (coalesced redistribute).

Referenced by redistribute_coalesced_phase1(), and redistribute_coalesced_phase2().

◆ local

◆ 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

Tempoary used to record data that needs redistributing.

Referenced by redistribute_phase1(), redistribute_phase2(), and redistribute_phase3().

◆ 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

True if the last replicate() completed and no reset followed.

Referenced by clear(), redistribute_coalesced_phase1(), redistribute_phase1(), replicate(), replicate_on_hosts(), and reset_pmap_to_local().


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