MADNESS
version 0.9
|
Makes a distributed container with specified attributes. More...
#include <worlddc.h>
Public Types | |
typedef WorldContainer< keyT, valueT, hashfunT > | containerT |
typedef WorldContainerImpl < keyT, valueT, hashfunT > | implT |
typedef implT::pairT | pairT |
typedef implT::iterator | iterator |
typedef implT::const_iterator | const_iterator |
typedef implT::accessor | accessor |
typedef implT::const_accessor | const_accessor |
typedef Future< iterator > | futureT |
typedef Future< const_iterator > | const_futureT |
Public Member Functions | |
WorldContainer () | |
Makes an uninitialized container (no communication) More... | |
WorldContainer (World &world, bool do_pending=true, const hashfunT &hf=hashfunT()) | |
Makes an initialized, empty container with default data distribution (no communication) More... | |
WorldContainer (World &world, const std::shared_ptr< WorldDCPmapInterface< keyT > > &pmap, bool do_pending=true, const hashfunT &hf=hashfunT()) | |
Makes an initialized, empty container (no communication) More... | |
WorldContainer (const WorldContainer &other) | |
Copy constructor is shallow (no communication) More... | |
containerT & | operator= (const containerT &other) |
Assignment is shallow (no communication) More... | |
World & | get_world () const |
Returns the world associated with this container. More... | |
void | replace (const pairT &datum) |
Inserts/replaces key+value pair (non-blocking communication if key not local) More... | |
void | replace (const keyT &key, const valueT &value) |
Inserts/replaces key+value pair (non-blocking communication if key not local) More... | |
bool | find (accessor &acc, const keyT &key) |
Write access to LOCAL value by key. Returns true if found, false otherwise (always false for remote). More... | |
bool | find (const_accessor &acc, const keyT &key) const |
Read access to LOCAL value by key. Returns true if found, false otherwise (always false for remote). More... | |
bool | insert (accessor &acc, const keyT &key) |
Write access to LOCAL value by key. Returns true if inserted, false if already exists (throws if remote) More... | |
bool | insert (const_accessor &acc, const keyT &key) |
Read access to LOCAL value by key. Returns true if inserted, false if already exists (throws if remote) More... | |
template<typename input_iterator > | |
void | replace (input_iterator &start, input_iterator &end) |
Inserts pairs (non-blocking communication if key(s) not local) More... | |
bool | probe (const keyT &key) const |
Returns true if local data is immediately available (no communication) More... | |
ProcessID | owner (const keyT &key) const |
Returns processor that logically owns key (no communication) More... | |
bool | is_local (const keyT &key) const |
Returns true if the key maps to the local processor (no communication) More... | |
Future< iterator > | find (const keyT &key) |
Returns a future iterator (non-blocking communication if key not local) More... | |
Future< const_iterator > | find (const keyT &key) const |
Returns a future iterator (non-blocking communication if key not local) More... | |
iterator | begin () |
Returns an iterator to the beginning of the local data (no communication) More... | |
const_iterator | begin () const |
Returns an iterator to the beginning of the local data (no communication) More... | |
iterator | end () |
Returns an iterator past the end of the local data (no communication) More... | |
const_iterator | end () const |
Returns an iterator past the end of the local data (no communication) More... | |
void | erase (const keyT &key) |
Erases entry from container (non-blocking comm if remote) More... | |
void | erase (const iterator &it) |
Erases entry corresponding to local iterator (no communication) More... | |
void | erase (const iterator &start, const iterator &finish) |
Erases range defined by local iterators (no communication) More... | |
void | clear () |
Clears all local data (no communication) More... | |
std::size_t | size () const |
Returns the number of local entries (no communication) More... | |
const std::shared_ptr < WorldDCPmapInterface< keyT > > & | get_pmap () const |
Returns shared pointer to the process mapping. More... | |
hashfunT & | get_hash () const |
Returns a reference to the hashing functor. More... | |
void | process_pending () |
Process pending messages. More... | |
template<typename memfunT > | |
Future< MEMFUN_RETURNT(memfunT) > | send (const keyT &key, memfunT memfun) |
Sends message "resultT memfun()" to item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | send (const keyT &key, const memfunT &memfun, const arg1T &arg1) |
Sends message "resultT memfun(arg1T)" to item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | send (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2) |
Sends message "resultT memfun(arg1T,arg2T)" to item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | send (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3) |
Sends message "resultT memfun(arg1T,arg2T,arg3T)" to item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | send (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3, const arg4T &arg4) |
Sends message "resultT memfun(arg1T,arg2T,arg3T,arg4T)" to item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T , typename arg5T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | send (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3, const arg4T &arg4, const arg5T &arg5) |
Sends message "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T)" to item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T , typename arg5T , typename arg6T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | send (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3, const arg4T &arg4, const arg5T &arg5, const arg6T &arg6) |
Sends message "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T,arg6T)" to item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T , typename arg5T , typename arg6T , typename arg7T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | send (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) |
Sends message "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T,arg6T,arg7T)" to item (non-blocking comm if remote) More... | |
template<typename memfunT > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | send (const keyT &key, memfunT memfun) const |
Sends message "resultT memfun() const" to item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | send (const keyT &key, memfunT memfun, const arg1T &arg1) const |
Sends message "resultT memfun(arg1T) const" to item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | send (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2) const |
Sends message "resultT memfun(arg1T,arg2T) const" to item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | send (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3) const |
Sends message "resultT memfun(arg1T,arg2T,arg3T) const" to item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | send (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3, const arg4T &arg4) const |
Sends message "resultT memfun(arg1T,arg2T,arg3T,arg4T) const" to item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T , typename arg5T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | send (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3, const arg4T &arg4, const arg5T &arg5) const |
Sends message "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T) const" to item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T , typename arg5T , typename arg6T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | send (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3, const arg4T &arg4, const arg5T &arg5, const arg6T &arg6) const |
Sends message "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T,arg6T) const" to item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T , typename arg5T , typename arg6T , typename arg7T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | send (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) const |
Sends message "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T,arg6T,arg7T) const" to item (non-blocking comm if remote) More... | |
template<typename memfunT > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | task (const keyT &key, memfunT memfun, const TaskAttributes &attr=TaskAttributes()) |
Adds task "resultT memfun()" in process owning item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | task (const keyT &key, memfunT memfun, const arg1T &arg1, const TaskAttributes &attr=TaskAttributes()) |
Adds task "resultT memfun(arg1T)" in process owning item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | task (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const TaskAttributes &attr=TaskAttributes()) |
Adds task "resultT memfun(arg1T,arg2T)" in process owning item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | task (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3, const TaskAttributes &attr=TaskAttributes()) |
Adds task "resultT memfun(arg1T,arg2T,arg3T)" in process owning item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | task (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3, const arg4T &arg4, const TaskAttributes &attr=TaskAttributes()) |
Adds task "resultT memfun(arg1T,arg2T,arg3T,arg4T)" in process owning item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T , typename arg5T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | task (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3, const arg4T &arg4, const arg5T &arg5, const TaskAttributes &attr=TaskAttributes()) |
Adds task "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T)" in process owning item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T , typename arg5T , typename arg6T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | task (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3, const arg4T &arg4, const arg5T &arg5, const arg6T &arg6, const TaskAttributes &attr=TaskAttributes()) |
Adds task "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T,arg6T)" in process owning item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T , typename arg5T , typename arg6T , typename arg7T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | task (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, const TaskAttributes &attr=TaskAttributes()) |
Adds task "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T,arg6T,arg7T)" in process owning item (non-blocking comm if remote) More... | |
template<typename memfunT > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | task (const keyT &key, memfunT memfun, const TaskAttributes &attr=TaskAttributes()) const |
Adds task "resultT memfun() const" in process owning item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | task (const keyT &key, memfunT memfun, const arg1T &arg1, const TaskAttributes &attr=TaskAttributes()) const |
Adds task "resultT memfun(arg1T) const" in process owning item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | task (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const TaskAttributes &attr=TaskAttributes()) const |
Adds task "resultT memfun(arg1T,arg2T) const" in process owning item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | task (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3, const TaskAttributes &attr=TaskAttributes()) const |
Adds task "resultT memfun(arg1T,arg2T,arg3T) const" in process owning item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | task (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3, const arg4T &arg4, const TaskAttributes &attr=TaskAttributes()) const |
Adds task "resultT memfun(arg1T,arg2T,arg3T, arg4T) const" in process owning item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T , typename arg5T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | task (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3, const arg4T &arg4, const arg5T &arg5, const TaskAttributes &attr=TaskAttributes()) const |
Adds task "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T) const" in process owning item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T , typename arg5T , typename arg6T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | task (const keyT &key, memfunT memfun, const arg1T &arg1, const arg2T &arg2, const arg3T &arg3, const arg4T &arg4, const arg5T &arg5, const arg6T &arg6, const TaskAttributes &attr=TaskAttributes()) const |
Adds task "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T,arg6T) const" in process owning item (non-blocking comm if remote) More... | |
template<typename memfunT , typename arg1T , typename arg2T , typename arg3T , typename arg4T , typename arg5T , typename arg6T , typename arg7T > | |
Future< REMFUTURE(MEMFUN_RETURNT(memfunT)) > | task (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, const TaskAttributes &attr=TaskAttributes()) const |
Adds task "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T,arg6T,arg7T) const" in process owning item (non-blocking comm if remote) More... | |
template<typename Archive > | |
void | serialize (const Archive &ar) |
(de)Serialize — Local data only to/from anything except Buffer*Archive and Parallel*Archive More... | |
void | serialize (const archive::BufferOutputArchive &ar) |
(de)Serialize — !! ONLY for purpose of interprocess communication More... | |
void | serialize (const archive::BufferInputArchive &ar) |
(de)Serialize — !! ONLY for purpose of interprocess communication More... | |
const uniqueidT & | id () const |
Returns the associated unique id ... must be initialized. More... | |
virtual | ~WorldContainer () |
Destructor passes ownership of implementation to world for deferred cleanup. More... | |
Friends | |
void | swap (WorldContainer &, WorldContainer &) |
Swaps the content of two WorldContainer objects. It should be called on all nodes. More... | |
Makes a distributed container with specified attributes.
There is no communication or syncronization associated with making a new container, but every process must invoke the constructor for each container in the same order. This is so that we can assign each container a unique ID without any communication. Since remotely invoked operations may start happening before local construction, messages on not yet constructed containers are buffered pending construction.
Similarly, when a container is destroyed, the actual destruction is deferred until a synchronization point (world.gop.fence()) in order to eliminate the need to fence before destroying every container.
The distribution of data between processes is controlled by the process map (Pmap) class. The default is uniform hashing based upon a strong (Bob Jenkins, lookup3) bytewise hash of the key.
All operations, including constructors and destructors, are non-blocking and return immediately. If communication occurs it is asynchronous, otherwise operations are local.
typedef implT::accessor madness::WorldContainer< keyT, valueT, hashfunT >::accessor |
typedef implT::const_accessor madness::WorldContainer< keyT, valueT, hashfunT >::const_accessor |
typedef Future<const_iterator> madness::WorldContainer< keyT, valueT, hashfunT >::const_futureT |
typedef implT::const_iterator madness::WorldContainer< keyT, valueT, hashfunT >::const_iterator |
typedef WorldContainer<keyT,valueT,hashfunT> madness::WorldContainer< keyT, valueT, hashfunT >::containerT |
typedef Future<iterator> madness::WorldContainer< keyT, valueT, hashfunT >::futureT |
typedef WorldContainerImpl<keyT,valueT,hashfunT> madness::WorldContainer< keyT, valueT, hashfunT >::implT |
typedef implT::iterator madness::WorldContainer< keyT, valueT, hashfunT >::iterator |
typedef implT::pairT madness::WorldContainer< keyT, valueT, hashfunT >::pairT |
|
inline |
Makes an uninitialized container (no communication)
The container is useless until assigned to from a fully constructed container. There is no need to worry about default constructors being executed in order.
|
inline |
Makes an initialized, empty container with default data distribution (no communication)
A unique ID is associated with every distributed container within a world. In order to avoid synchronization when making a container, we have to assume that all processes execute this constructor in the same order (does not apply to the non-initializing, default constructor).
|
inline |
Makes an initialized, empty container (no communication)
A unique ID is associated with every distributed container within a world. In order to avoid synchronization when making a container, we have to assume that all processes execute this constructor in the same order (does not apply to the non-initializing, default constructor).
|
inline |
Copy constructor is shallow (no communication)
The copy refers to exactly the same container as other which must be initialized.
|
inlinevirtual |
Destructor passes ownership of implementation to world for deferred cleanup.
|
inline |
Returns an iterator to the beginning of the local data (no communication)
Referenced by madness::FunctionImpl< Q, NDIM >::apply(), madness::FunctionImpl< Q, NDIM >::apply_1d_realspace_push(), madness::FunctionImpl< Q, NDIM >::apply_source_driven(), madness::WorldContainer< keyT, nodeT >::begin(), madness::FunctionImpl< Q, NDIM >::copy_coeffs(), madness::FunctionImpl< T, NDIM >::diff(), madness::FunctionImpl< Q, NDIM >::errsq_local(), madness::FunctionImpl< Q, NDIM >::flo_unary_op_node_inplace(), madness::FunctionImpl< Q, NDIM >::FunctionImpl(), madness::FunctionImpl< Q, NDIM >::gaxpy(), madness::FunctionImpl< Q, NDIM >::gaxpy_inplace(), madness::FunctionImpl< Q, NDIM >::inner_ext_local(), madness::LoadBalanceDeux< NDIM >::load_balance(), madness::FunctionImpl< Q, NDIM >::multiop_values(), madness::FunctionImpl< T, NDIM >::project(), madness::WorldContainer< keyT, nodeT >::serialize(), madness::FunctionImpl< Q, NDIM >::unary_op_coeff_inplace(), madness::FunctionImpl< Q, NDIM >::unary_op_node_inplace(), madness::FunctionImpl< Q, NDIM >::unary_op_value_inplace(), and madness::FunctionImpl< Q, NDIM >::vtransform_doit().
|
inline |
Returns an iterator to the beginning of the local data (no communication)
|
inline |
Clears all local data (no communication)
Invalidates all iterators
Referenced by madness::FunctionImpl< Q, NDIM >::make_Vphi().
|
inline |
Returns an iterator past the end of the local data (no communication)
Referenced by madness::FunctionImpl< Q, NDIM >::apply(), madness::FunctionImpl< Q, NDIM >::apply_1d_realspace_push(), madness::FunctionImpl< Q, NDIM >::apply_source_driven(), madness::FunctionImpl< Q, NDIM >::binaryXXa(), madness::FunctionImpl< Q, NDIM >::copy_coeffs(), madness::FunctionImpl< T, NDIM >::diff(), madness::WorldContainer< keyT, nodeT >::end(), madness::FunctionImpl< Q, NDIM >::errsq_local(), madness::FunctionImpl< Q, NDIM >::flo_unary_op_node_inplace(), madness::FunctionImpl< Q, NDIM >::FunctionImpl(), madness::FunctionImpl< Q, NDIM >::gaxpy(), madness::FunctionImpl< Q, NDIM >::gaxpy_inplace(), madness::FunctionImpl< Q, NDIM >::inner_ext_local(), madness::LoadBalanceDeux< NDIM >::load_balance(), madness::FunctionImpl< Q, NDIM >::mulXXa(), madness::FunctionImpl< Q, NDIM >::mulXXveca(), madness::LoadBalanceDeux< NDIM >::print_tree(), madness::FunctionImpl< T, NDIM >::project(), madness::WorldContainer< keyT, nodeT >::serialize(), madness::FunctionImpl< Q, NDIM >::unary_op_coeff_inplace(), madness::FunctionImpl< Q, NDIM >::unary_op_node_inplace(), madness::FunctionImpl< Q, NDIM >::unary_op_value_inplace(), and madness::FunctionImpl< Q, NDIM >::vtransform_doit().
|
inline |
Returns an iterator past the end of the local data (no communication)
|
inline |
Erases entry from container (non-blocking comm if remote)
Missing keys are quietly ignored.
Note that erasing an entry may invalidate iterators on the remote end. This is just the same as what happens when using STL iterators on an STL container in a sequential algorithm.
|
inline |
Erases entry corresponding to local iterator (no communication)
|
inline |
Erases range defined by local iterators (no communication)
|
inline |
Write access to LOCAL value by key. Returns true if found, false otherwise (always false for remote).
Referenced by madness::FunctionImpl< Q, NDIM >::binaryXXa(), madness::WorldContainer< keyT, nodeT >::find(), madness::FunctionImpl< Q, NDIM >::inner_ext_recursive(), madness::FunctionImpl< Q, NDIM >::multiop_values_doit(), madness::FunctionImpl< Q, NDIM >::mulXXa(), madness::FunctionImpl< Q, NDIM >::mulXXveca(), madness::leaf_op< T, NDIM >::operator()(), madness::FunctionImpl< T, NDIM >::do_check_symmetry_local::operator()(), madness::FunctionImpl< T, NDIM >::do_merge_trees< Q, R >::operator()(), madness::FunctionImpl< T, NDIM >::do_average::operator()(), madness::FunctionImpl< T, NDIM >::do_inner_local< R >::operator()(), madness::FunctionImpl< T, NDIM >::project_out_op< LDIM >::operator()(), madness::LoadBalanceDeux< NDIM >::print_tree(), madness::FunctionImpl< Q, NDIM >::refine_op(), madness::FunctionImpl< Q, NDIM >::refine_spawn(), and madness::FunctionImpl< Q, NDIM >::unaryXXa().
|
inline |
Read access to LOCAL value by key. Returns true if found, false otherwise (always false for remote).
|
inline |
Returns a future iterator (non-blocking communication if key not local)
Like an std::map an iterator "points" to an std::pair<const keyT,valueT>.
Refer to Future for info on how to avoid blocking.
|
inline |
Returns a future iterator (non-blocking communication if key not local)
Like an std::map an iterator "points" to an std::pair<const keyT,valueT>.
Refer to Future for info on how to avoid blocking.
|
inline |
Returns a reference to the hashing functor.
|
inline |
Returns shared pointer to the process mapping.
|
inline |
Returns the world associated with this container.
|
inline |
Returns the associated unique id ... must be initialized.
|
inline |
Write access to LOCAL value by key. Returns true if inserted, false if already exists (throws if remote)
Referenced by madness::WorldContainer< keyT, nodeT >::replace(), and madness::FunctionImpl< Q, NDIM >::vtransform_doit().
|
inline |
Read access to LOCAL value by key. Returns true if inserted, false if already exists (throws if remote)
|
inline |
Returns true if the key maps to the local processor (no communication)
Referenced by madness::FunctionImpl< Q, NDIM >::forward_traverse(), madness::leaf_op< T, NDIM >::operator()(), and madness::FunctionImpl< Q, NDIM >::traverse_tree().
|
inline |
Assignment is shallow (no communication)
The copy refers to exactly the same container as other which must be initialized.
|
inline |
Returns processor that logically owns key (no communication)
Local remapping may have changed its physical location, but all operations should forward correctly.
Referenced by madness::FunctionImpl< Q, NDIM >::apply(), madness::FunctionImpl< Q, NDIM >::apply_source_driven(), madness::FunctionImpl< Q, NDIM >::binaryXX(), madness::FunctionImpl< Q, NDIM >::binaryXXa(), madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::continue_recursion(), madness::DerivativeBase< T, NDIM >::find_neighbor(), madness::DerivativeBase< T, NDIM >::forward_do_diff1(), madness::FunctionImpl< Q, NDIM >::FunctionImpl(), madness::FunctionImpl< Q, NDIM >::gaxpy_ext(), madness::FunctionImpl< Q, NDIM >::gaxpy_inplace_reconstructed(), madness::FunctionImpl< Q, NDIM >::hartree_product(), madness::LoadBalanceDeux< NDIM >::load_balance(), madness::FunctionImpl< Q, NDIM >::make_Vphi(), madness::FunctionImpl< Q, NDIM >::multiply(), madness::FunctionImpl< Q, NDIM >::mulXX(), madness::FunctionImpl< Q, NDIM >::mulXXa(), madness::FunctionImpl< Q, NDIM >::mulXXvec(), madness::FunctionImpl< Q, NDIM >::mulXXveca(), madness::FunctionImpl< Q, NDIM >::project_out(), madness::FunctionImpl< Q, NDIM >::project_out2(), madness::FunctionImpl< Q, NDIM >::recursive_apply(), madness::FunctionImpl< Q, NDIM >::refine(), madness::FunctionImpl< Q, NDIM >::refine_spawn(), madness::WorldContainer< keyT, nodeT >::send(), madness::WorldContainer< keyT, nodeT >::task(), madness::FunctionImpl< Q, NDIM >::traverse_tree(), madness::FunctionImpl< Q, NDIM >::unaryXX(), madness::FunctionImpl< Q, NDIM >::unaryXXa(), and madness::FunctionImpl< Q, NDIM >::unaryXXvalues().
|
inline |
Returns true if local data is immediately available (no communication)
Referenced by madness::FunctionImpl< T, NDIM >::do_check_symmetry_local::operator()(), madness::FunctionImpl< T, NDIM >::do_inner_local< R >::operator()(), and madness::FunctionImpl< T, NDIM >::project_out_op< LDIM >::operator()().
|
inline |
Process pending messages.
If the constructor was given do_pending=false
then you must invoke this routine in order to process both prior and future messages.
Referenced by madness::FunctionImpl< Q, NDIM >::FunctionImpl().
|
inline |
Inserts/replaces key+value pair (non-blocking communication if key not local)
Referenced by madness::FunctionImpl< Q, NDIM >::binaryXXa(), madness::FunctionImpl< Q, NDIM >::copy_coeffs(), madness::FunctionImpl< Q, NDIM >::do_binary_op(), madness::DerivativeBase< T, NDIM >::do_diff1(), madness::FunctionImpl< Q, NDIM >::do_mul(), madness::FunctionImpl< Q, NDIM >::gaxpy_ext_recursive(), madness::FunctionImpl< Q, NDIM >::make_Vphi(), madness::FunctionImpl< Q, NDIM >::multiop_values(), madness::FunctionImpl< Q, NDIM >::multiop_values_doit(), madness::FunctionImpl< Q, NDIM >::mulXXa(), madness::insert_op< T, NDIM >::operator()(), madness::FunctionImpl< T, NDIM >::do_merge_trees< Q, R >::operator()(), madness::FunctionImpl< T, NDIM >::do_mapdim::operator()(), madness::FunctionImpl< T, NDIM >::do_average::operator()(), madness::FunctionImpl< T, NDIM >::Vphi_op_NS< opT, LDIM >::operator()(), madness::FunctionImpl< Q, NDIM >::read_grid(), madness::FunctionImpl< Q, NDIM >::read_grid2(), madness::FunctionImpl< Q, NDIM >::refine_op(), madness::WorldContainer< keyT, nodeT >::replace(), madness::FunctionImpl< Q, NDIM >::scale_oop(), madness::WorldContainer< keyT, nodeT >::serialize(), and madness::FunctionImpl< Q, NDIM >::unaryXXa().
|
inline |
Inserts/replaces key+value pair (non-blocking communication if key not local)
|
inline |
Inserts pairs (non-blocking communication if key(s) not local)
|
inline |
Sends message "resultT memfun()" to item (non-blocking comm if remote)
If item does not exist it is made with the default constructor.
Future arguments must be ready for remote messages.
Returns a future result (Future<void> may be ignored).
The method executes with a write lock on the item.
Referenced by madness::FunctionImpl< Q, NDIM >::gaxpy(), madness::LoadBalanceDeux< NDIM >::load_balance(), and madness::WorldContainer< keyT, nodeT >::send().
|
inline |
Sends message "resultT memfun(arg1T)" to item (non-blocking comm if remote)
If item does not exist it is made with the default constructor.
Future arguments must be ready for remote messages.
Returns a future result (Future<void> may be ignored).
The method executes with a write lock on the item.
|
inline |
Sends message "resultT memfun(arg1T,arg2T)" to item (non-blocking comm if remote)
If item does not exist it is made with the default constructor.
Future arguments must be ready for both local and remote messages.
Returns a future result (Future<void> may be ignored).
The method executes with a write lock on the item.
|
inline |
Sends message "resultT memfun(arg1T,arg2T,arg3T)" to item (non-blocking comm if remote)
If item does not exist it is made with the default constructor.
Future arguments must be ready for both local and remote messages.
Returns a future result (Future<void> may be ignored).
The method executes with a write lock on the item.
|
inline |
Sends message "resultT memfun(arg1T,arg2T,arg3T,arg4T)" to item (non-blocking comm if remote)
If item does not exist it is made with the default constructor.
Future arguments must be ready for both local and remote messages.
Returns a future result (Future<void> may be ignored).
The method executes with a write lock on the item.
|
inline |
Sends message "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T)" to item (non-blocking comm if remote)
If item does not exist it is made with the default constructor.
Future arguments must be ready for both local and remote messages.
Returns a future result (Future<void> may be ignored).
The method executes with a write lock on the item.
|
inline |
Sends message "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T,arg6T)" to item (non-blocking comm if remote)
If item does not exist it is made with the default constructor.
Future arguments must be ready for both local and remote messages.
Returns a future result (Future<void> may be ignored).
The method executes with a write lock on the item.
|
inline |
Sends message "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T,arg6T,arg7T)" to item (non-blocking comm if remote)
If item does not exist it is made with the default constructor.
Future arguments must be ready for both local and remote messages.
Returns a future result (Future<void> may be ignored).
The method executes with a write lock on the item.
|
inline |
Sends message "resultT memfun() const" to item (non-blocking comm if remote)
The method executes with a write lock on the item.
|
inline |
Sends message "resultT memfun(arg1T) const" to item (non-blocking comm if remote)
The method executes with a write lock on the item.
|
inline |
Sends message "resultT memfun(arg1T,arg2T) const" to item (non-blocking comm if remote)
The method executes with a write lock on the item.
|
inline |
Sends message "resultT memfun(arg1T,arg2T,arg3T) const" to item (non-blocking comm if remote)
The method executes with a write lock on the item.
|
inline |
Sends message "resultT memfun(arg1T,arg2T,arg3T,arg4T) const" to item (non-blocking comm if remote)
The method executes with a write lock on the item.
|
inline |
Sends message "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T) const" to item (non-blocking comm if remote)
The method executes with a write lock on the item.
|
inline |
Sends message "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T,arg6T) const" to item (non-blocking comm if remote)
The method executes with a write lock on the item.
|
inline |
Sends message "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T,arg6T,arg7T) const" to item (non-blocking comm if remote)
The method executes with a write lock on the item.
|
inline |
(de)Serialize — Local data only to/from anything except Buffer*Archive and Parallel*Archive
Advisable for you to fence before and after this to ensure consistency
|
inline |
(de)Serialize — !! ONLY for purpose of interprocess communication
This just writes/reads the unique id to/from the Buffer*Archive.
|
inline |
(de)Serialize — !! ONLY for purpose of interprocess communication
This just writes/reads the unique id to/from the Buffer*Archive.
|
inline |
Returns the number of local entries (no communication)
|
inline |
Adds task "resultT memfun()" in process owning item (non-blocking comm if remote)
If item does not exist it is made with the default constructor.
Future arguments for local tasks can generate dependencies, but for remote tasks all futures must be ready.
Returns a future result (Future<void> may be ignored).
The method executes with a write lock on the item.
Referenced by madness::FunctionImpl< Q, NDIM >::apply_1d_realspace_push_op(), madness::FunctionImpl< Q, NDIM >::do_apply(), madness::FunctionImpl< Q, NDIM >::do_apply_kernel(), madness::FunctionImpl< Q, NDIM >::do_apply_kernel2(), madness::FunctionImpl< Q, NDIM >::do_apply_kernel3(), madness::FunctionImpl< Q, NDIM >::do_project_out(), madness::FunctionImpl< T, NDIM >::project_out_op< LDIM >::operator()(), madness::WorldContainer< keyT, nodeT >::task(), and madness::FunctionImpl< Q, NDIM >::vtransform_doit().
|
inline |
Adds task "resultT memfun(arg1T)" in process owning item (non-blocking comm if remote)
If item does not exist it is made with the default constructor.
Future arguments for local tasks can generate dependencies, but for remote tasks all futures must be ready.
Returns a future result (Future<void> may be ignored).
The method executes with a write lock on the item.
|
inline |
Adds task "resultT memfun(arg1T,arg2T)" in process owning item (non-blocking comm if remote)
If item does not exist it is made with the default constructor.
Future arguments for local tasks can generate dependencies, but for remote tasks all futures must be ready.
Returns a future result (Future<void> may be ignored).
The method executes with a write lock on the item.
|
inline |
Adds task "resultT memfun(arg1T,arg2T,arg3T)" in process owning item (non-blocking comm if remote)
If item does not exist it is made with the default constructor.
Future arguments for local tasks can generate dependencies, but for remote tasks all futures must be ready.
Returns a future result (Future<void> may be ignored).
The method executes with a write lock on the item.
|
inline |
Adds task "resultT memfun(arg1T,arg2T,arg3T,arg4T)" in process owning item (non-blocking comm if remote)
If item does not exist it is made with the default constructor.
Future arguments for local tasks can generate dependencies, but for remote tasks all futures must be ready.
Returns a future result (Future<void> may be ignored).
The method executes with a write lock on the item.
|
inline |
Adds task "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T)" in process owning item (non-blocking comm if remote)
If item does not exist it is made with the default constructor.
Future arguments for local tasks can generate dependencies, but for remote tasks all futures must be ready.
Returns a future result (Future<void> may be ignored).
The method executes with a write lock on the item.
|
inline |
Adds task "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T,arg6T)" in process owning item (non-blocking comm if remote)
If item does not exist it is made with the default constructor.
Future arguments for local tasks can generate dependencies, but for remote tasks all futures must be ready.
Returns a future result (Future<void> may be ignored).
The method executes with a write lock on the item.
|
inline |
Adds task "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T,arg6T,arg7T)" in process owning item (non-blocking comm if remote)
If item does not exist it is made with the default constructor.
Future arguments for local tasks can generate dependencies, but for remote tasks all futures must be ready.
Returns a future result (Future<void> may be ignored).
The method executes with a write lock on the item.
|
inline |
Adds task "resultT memfun() const" in process owning item (non-blocking comm if remote)
The method executes with a write lock on the item.
|
inline |
Adds task "resultT memfun(arg1T) const" in process owning item (non-blocking comm if remote)
The method executes with a write lock on the item.
|
inline |
Adds task "resultT memfun(arg1T,arg2T) const" in process owning item (non-blocking comm if remote)
The method executes with a write lock on the item.
|
inline |
Adds task "resultT memfun(arg1T,arg2T,arg3T) const" in process owning item (non-blocking comm if remote)
The method executes with a write lock on the item.
|
inline |
Adds task "resultT memfun(arg1T,arg2T,arg3T, arg4T) const" in process owning item (non-blocking comm if remote)
The method executes with a write lock on the item.
|
inline |
Adds task "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T) const" in process owning item (non-blocking comm if remote)
The method executes with a write lock on the item.
|
inline |
Adds task "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T,arg6T) const" in process owning item (non-blocking comm if remote)
The method executes with a write lock on the item.
|
inline |
Adds task "resultT memfun(arg1T,arg2T,arg3T,arg4T,arg5T,arg6T,arg7T) const" in process owning item (non-blocking comm if remote)
The method executes with a write lock on the item.
|
friend |
Swaps the content of two WorldContainer objects. It should be called on all nodes.