
#include <ChunkMulticastStrategy.h>

Data Fields | |
| int | numChunks |
| envelope ** | recvChunks |
| int | nrecv |
| int | srcPe |
| int | idx |
This strategy extracts the array section information, and packs the section information and the user message into a single message. The original message is delivered locally, and the new message is sent using CmiSyncListSendAndFree to all other processors containing destination objects. If the destination entry method is [nokeep], then the multicast is delivered inline without extra copies to the local destination elements. If the destination is not [nokeep], then the message is delivered through the scheduler queue.
Projections can trace the messages for the [nokeep] destinations, but the sending entry method will end prematurely because inline calling of local entry methods is not fully supported by Projections. Messages multicast to non [nokeep] methods are displayed incorrectly, probably because the call to deliver overwrites the source pe & event.
Fix projections logging for the non [nokeep] version
This strategy is simpler than those which are derived from the MulticastStrategy class because those maintain a persistant record of previous array section information extracted from the messages, and those provide multiple implementations of the multicast tree (such as ring or multiring or all to all). Those strategies ought to be used when multiple multicasts are sent to the same array section. If an array section is not reused, then this strategy ought to be used.
A class can be created which inherits from this class, but provides its own determineNextHopPEs method to specify any type of desired spanning tree. For example, ChunkRingMulticastStrategy forwards the multicast messages in a ring while ChunkTreeMulticastStrategy forwards messages along a tree of specified degree. In the future, topology aware (both network and core/cpu/node) strategies should be added.
The local messages are delivered through the array manager using the CharmStrategy::deliverToIndices methods. If a destination chare is remote, the array manager will forward it on to the pe that contains the chare.
To create a new strategy:
Definition at line 59 of file ChunkMulticastStrategy.h.
Definition at line 60 of file ChunkMulticastStrategy.h.
Referenced by ChunkMulticastStrategy::handleMessage().
Definition at line 61 of file ChunkMulticastStrategy.h.
Referenced by ChunkMulticastStrategy::handleMessage().
Definition at line 62 of file ChunkMulticastStrategy.h.
Referenced by ChunkMulticastStrategy::handleMessage().
Definition at line 63 of file ChunkMulticastStrategy.h.
Referenced by ChunkMulticastStrategy::handleMessage().
Definition at line 64 of file ChunkMulticastStrategy.h.
Referenced by ChunkMulticastStrategy::handleMessage().
1.5.5