MADNESS 0.10.1
Public Types | Public Member Functions | Private Attributes | List of all members
madness::FinalizeReducer< T, NDIM > Class Template Reference

Receiving end of the exchange finalize, living in the world the transfer rides on. More...

#include <exchangeoperator.h>

Inheritance diagram for madness::FinalizeReducer< T, NDIM >:
Inheritance graph
[legend]
Collaboration diagram for madness::FinalizeReducer< T, NDIM >:
Collaboration graph
[legend]

Public Types

typedef FunctionImpl< T, NDIMimplT
 
typedef FinalizeNodeRec< T, NDIMrecT
 
- Public Types inherited from madness::WorldObject< FinalizeReducer< T, NDIM > >
typedef WorldObject< FinalizeReducer< T, NDIM > > objT
 

Public Member Functions

 FinalizeReducer (World &world)
 
void accumulate_chunk (const std::vector< recT > &recs)
 
void set_targets (std::vector< implT * > dests, T beta)
 point at the destinations for the next drain; local, called by every rank
 
- Public Member Functions inherited from madness::WorldObject< FinalizeReducer< T, NDIM > >
 WorldObject (const WorldObject &other)
 
 WorldObject (World &world)
 Constructor that associates an object (via the derived class) with a globally unique ID.
 
virtual ~WorldObject ()
 
WorldObjectoperator= (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 ()
 
Worldget_world () const
 
Worldget_world_noexcept () const noexcept
 Get the world to which this object belongs, without risking a throw.
 
const uniqueidTid () const
 Returns the globally unique object ID.
 
bool world_is_alive () const noexcept
 Reports whether the world to which this object belongs still exists.
 

Private Attributes

beta_ = T(1.0)
 
std::vector< implT * > dests_
 

Additional Inherited Members

- Protected Member Functions inherited from madness::WorldObject< FinalizeReducer< T, NDIM > >
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.
 
Worldget_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 T, std::size_t NDIM>
class madness::FinalizeReducer< T, NDIM >

Receiving end of the exchange finalize, living in the world the transfer rides on.

Sources push bulk chunks here with task(), so deserializing and accumulating happens on a worker and never on the communication thread. The arithmetic is the same as FunctionNode::gaxpy_inplace; the accessor write lock is what serializes two senders that reach the same key at once.

Member Typedef Documentation

◆ implT

template<typename T , std::size_t NDIM>
typedef FunctionImpl<T, NDIM> madness::FinalizeReducer< T, NDIM >::implT

◆ recT

template<typename T , std::size_t NDIM>
typedef FinalizeNodeRec<T, NDIM> madness::FinalizeReducer< T, NDIM >::recT

Constructor & Destructor Documentation

◆ FinalizeReducer()

template<typename T , std::size_t NDIM>
madness::FinalizeReducer< T, NDIM >::FinalizeReducer ( World world)
inlineexplicit

Member Function Documentation

◆ accumulate_chunk()

template<typename T , std::size_t NDIM>
void madness::FinalizeReducer< T, NDIM >::accumulate_chunk ( const std::vector< recT > &  recs)
inline

◆ set_targets()

template<typename T , std::size_t NDIM>
void madness::FinalizeReducer< T, NDIM >::set_targets ( std::vector< implT * >  dests,
beta 
)
inline

point at the destinations for the next drain; local, called by every rank

References beta, madness::FinalizeReducer< T, NDIM >::beta_, madness::FinalizeReducer< T, NDIM >::dests_, and madness::nonlinear_vector_solver().

Member Data Documentation

◆ beta_

template<typename T , std::size_t NDIM>
T madness::FinalizeReducer< T, NDIM >::beta_ = T(1.0)
private

◆ dests_

template<typename T , std::size_t NDIM>
std::vector<implT*> madness::FinalizeReducer< T, NDIM >::dests_
private

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