PPL Logo

RectMulticastStrategy Class Reference
[Strategies for use in Charm++]

Main class for multicast strategies. More...

#include <RectMulticastStrategy.h>

Inheritance diagram for RectMulticastStrategy:

Inheritance graph
[legend]
Collaboration diagram for RectMulticastStrategy:

Collaboration graph
[legend]

Public Member Functions

 RectMulticastStrategy (CkMigrateMessage *m)
 RectMulticastStrategy (CkArrayID aid)
 Array constructor.
 ~RectMulticastStrategy ()
virtual void insertMessage (CharmMessageHolder *msg)
virtual void doneInserting ()
 Called after all messages have been deposited in this processor.
virtual void handleMessage (void *msg)
 Called by the converse handler function.
virtual void handleMessageForward (void *msg)
virtual void pup (PUP::er &p)
virtual void beginProcessing (int nelements)
 PUPable_decl (RectMulticastStrategy)

Protected Member Functions

unsigned int computeKey (int sectionID, int srcPe, CkArrayID arrId)
unsigned int computeKey (int sectionID, int srcPe, int id)
void insertSectionID (CkSectionID *sid)
 Add this section to the hash table locally.
virtual
ComlibRectSectionHashObject
createObjectOnSrcPe (int nindices, CkArrayIndex *idx_list, unsigned int sectionid)
 Called when a new section multicast is called by the user locally.
virtual
ComlibRectSectionHashObject
createObjectOnIntermediatePe (int nindices, CkArrayIndex *idxlist, int npes, ComlibMulticastIndexCount *counts, int srcpe, int sectionID)
 Similar to createHashObjectOnSrcPe, but that this call is made on the destination or intermediate processor.
virtual int needSorting ()
 Needed for getNewMulticastMessage, to specify if the list of processors need to be ordered.
void localMulticast (envelope *env, ComlibRectSectionHashObject *obj)
 Called to multicast the message to local array elements.
virtual void remoteMulticast (envelope *env, ComlibRectSectionHashObject *obj)
 Called to send to message out to the remote destinations.
virtual void forwardMulticast (envelope *env, ComlibRectSectionHashObject *obj)
 Called to forward to someone who can do the heavy sending work.
void handleNewMulticastMessage (envelope *env)
 Process a new message by extracting the array elements from it and creating a new hash object by calling createObjectOnIntermediatePe().
void sendRectDest (ComlibRectSectionHashObject *obj, int srcpe, envelope *env)
BGTsRC_Geometry_t * getRectGeometry (ComlibRectSectionHashObject *obj, int srcpe)
int assignCornerRoot (BGTsRC_Geometry_t *geom, int srcpe)

Protected Attributes

int handlerId
ComlibSectionInfo sinfo
CkHashtableT
< ComlibSectionHashKey,
ComlibRectSectionHashObject * > 
sec_ht
 Array section support.

Private Member Functions

 RectMulticastStrategy (CkMigrateMessage *m)
 ~RectMulticastStrategy ()
void insertMessage (MessageHolder *)
 Called for each message.
void handleMessage (void *)
 Called when a message is received in the strategy handler.
void pup (PUP::er &p)
 PUPable_decl (RectMulticastStrategy)

Detailed Description

Main class for multicast strategies.

It defaults to sending a direct message to all the processors involved in the multicast.

The definition of the section, as well as the location of all the elements in the processors is determined by the sending processor. The other will obey to it, even some elements have already migrated elsewhere.

Definition at line 44 of file RectMulticastStrategy.h.


Constructor & Destructor Documentation

RectMulticastStrategy::RectMulticastStrategy ( CkMigrateMessage m  )  [inline]

Definition at line 110 of file RectMulticastStrategy.h.

RectMulticastStrategy::RectMulticastStrategy ( CkMigrateMessage m  )  [inline, private]

Definition at line 133 of file RectMulticastStrategy.h.

RectMulticastStrategy::~RectMulticastStrategy (  )  [inline, private]

Definition at line 135 of file RectMulticastStrategy.h.


Member Function Documentation

unsigned int RectMulticastStrategy::computeKey ( int  sectionID,
int  srcPe,
CkArrayID  arrId 
) [inline, protected]

Definition at line 53 of file RectMulticastStrategy.h.

References idx.

Referenced by createObjectOnIntermediatePe(), createObjectOnSrcPe(), and remoteMulticast().

unsigned int RectMulticastStrategy::computeKey ( int  sectionID,
int  srcPe,
int  id 
) [inline, protected]

Definition at line 57 of file RectMulticastStrategy.h.

virtual int RectMulticastStrategy::needSorting (  )  [inline, protected, virtual]

Needed for getNewMulticastMessage, to specify if the list of processors need to be ordered.

Definition at line 85 of file RectMulticastStrategy.h.

Referenced by insertMessage().

RectMulticastStrategy::PUPable_decl ( RectMulticastStrategy   ) 

void RectMulticastStrategy::insertMessage ( MessageHolder msg  )  [inline, private, virtual]

Called for each message.

Implements Strategy.

Definition at line 136 of file RectMulticastStrategy.h.

void RectMulticastStrategy::handleMessage ( void *  msg  )  [inline, private, virtual]

Called when a message is received in the strategy handler.

Implements Strategy.

Definition at line 137 of file RectMulticastStrategy.h.

void RectMulticastStrategy::pup ( PUP::er p  )  [inline, private, virtual]

Reimplemented from CharmStrategy.

Definition at line 138 of file RectMulticastStrategy.h.

RectMulticastStrategy::PUPable_decl ( RectMulticastStrategy   )  [private]


Field Documentation

Definition at line 46 of file RectMulticastStrategy.h.

Referenced by beginProcessing(), and forwardMulticast().


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

Generated on Fri May 25 08:05:05 2012 for Charm++ by  doxygen 1.5.5