PPL Logo

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

The EachToManyMulticast Strategy optimizes all-to-all communication. More...

#include <EachToManyMulticastStrategy.h>

Inheritance diagram for EachToManyMulticastStrategy:

Inheritance graph
[legend]
Collaboration diagram for EachToManyMulticastStrategy:

Collaboration graph
[legend]

Public Member Functions

 EachToManyMulticastStrategy (int strategyId, CkGroupID src, CkGroupID dest, int nsrcpes=0, int *srcpelist=0, int ndestpes=0, int *destpelist=0)
 Group constructor If only the first three parameters are provided, the whole group will be used for the multicast(0 to CkNumPes) TODO verify that the 0 parameter.
 EachToManyMulticastStrategy (int substrategy, CkArrayID src, CkArrayID dest, int nsrc=0, CkArrayIndex *srcelements=0, int ndest=0, CkArrayIndex *destelements=0)
 Array constructor TODO: Fix this to allow for the same parameters as would be given to an array section creation(ranges of indices).
 EachToManyMulticastStrategy (CkMigrateMessage *m)
 ~EachToManyMulticastStrategy ()
void insertMessage (MessageHolder *msg)
 Receive a message from the upper layer and buffer it in the msgQ until doneInserting is called.
virtual void insertMessage (CharmMessageHolder *msg)
virtual void pup (PUP::er &p)
virtual void localMulticast (void *msg)
virtual void notifyDone ()
 Called when a subsystem scheme (like in bracketed EachToMany) terminates the requested routing operation.
virtual void deliver (char *, int)
 Called by handleMessage at the destinations for the broadcast if in DIRECT mode.
virtual void handleMessage (void *msg)
 this method can be called when the strategy is in DIRECT mode, so the message will go the comlib_handler and then arrive here.
 PUPable_decl (EachToManyMulticastStrategy)

Protected Member Functions

virtual void commonInit (int *)
 Executes common code just after array and group constructors.

Detailed Description

The EachToManyMulticast Strategy optimizes all-to-all communication.

It combines messages and sends them along virtual topologies 2d mesh, 3d mesh and hypercube using the RouterStrategy as underlying strategy.

For large messages send them directly.

This is the object level strategy. For processor level optimizations the underlying RouterStrategy is called.

Author:
Sameer Kumar, Filippo, and Isaac

Definition at line 28 of file EachToManyMulticastStrategy.h.


Constructor & Destructor Documentation

EachToManyMulticastStrategy::EachToManyMulticastStrategy ( CkMigrateMessage m  )  [inline]

Definition at line 49 of file EachToManyMulticastStrategy.h.

References Converse::CkMyPe(), and ComlibPrintf().


Member Function Documentation

void EachToManyMulticastStrategy::insertMessage ( MessageHolder cmsg  )  [inline, virtual]

Receive a message from the upper layer and buffer it in the msgQ until doneInserting is called.

If the strategy is USE_DIRECT then just send it to the handleMessage method for the Strategy.

Reimplemented from RouterStrategy.

Definition at line 55 of file EachToManyMulticastStrategy.h.

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

this method can be called when the strategy is in DIRECT mode, so the message will go the comlib_handler and then arrive here.

Reimplemented from RouterStrategy.

Definition at line 73 of file EachToManyMulticastStrategy.h.

References deliver(), and envelope::getTotalsize().

EachToManyMulticastStrategy::PUPable_decl ( EachToManyMulticastStrategy   ) 


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

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