
#include <de.h>


Public Member Functions | |
| DimexRouter (int, int, int ndirect=0) | |
| ~DimexRouter () | |
| void | NumDeposits (comID, int) |
| void | EachToAllMulticast (comID, int, void *, int) |
| Insert messages for the all to all operation, All processors will be multicast the same message here. | |
| void | EachToManyMulticast (comID, int, void *, int, int *, int) |
| Insert messages for the all to all operation, The destination processors to which a message is multicast to be can be specified. | |
| void | EachToManyMulticastQ (comID id, CkQ< MessageHolder * > &msgq) |
| Same as EachToManyMulticast, only it receives all the messages into a list. | |
| void | ProcMsg (int, msgstruct **) |
| void | RecvManyMsg (comID, char *) |
| void | ProcManyMsg (comID, char *) |
| void | DummyEP (comID id, int) |
| void | SetMap (int *) |
| Set the map between processors and virtual processor id's, Useful when only a subset of processors are involved in the communication operation. | |
| void | SetID (comID id) |
Private Member Functions | |
| void | InitVars () |
| void | CreateStageTable (int, int *) |
| void | LocalProcMsg (comID id) |
| void | start_hcube (comID id) |
Private Attributes | |
| PeTable * | PeHcube |
| PeTable * | PeHcube1 |
| int * | buffer |
| int * | msgnum |
| int | InitCounter |
| int * | penum |
| int * | gpes |
| int ** | next |
| int | Dim |
| int | stage |
| int | MyPe |
| int | NumPes |
| int | numDirectSteps |
| int | two_pow_ndirect |
| int | procMsgCount |
Definition at line 8 of file de.h.
Definition at line 92 of file de.C.
References CreateStageTable(), Dim, gpes, InitVars(), maxdim(), MyPe, next, numDirectSteps, NumPes, PeHcube, PeHcube1, penum, and two_pow_ndirect.
Referenced by newhcubeobject().
| DimexRouter::~DimexRouter | ( | ) |
| void DimexRouter::InitVars | ( | ) | [private] |
Definition at line 161 of file de.C.
References Dim, InitCounter, MyPe, NumPes, procMsgCount, setIC(), and stage.
Referenced by DimexRouter(), and LocalProcMsg().
| void DimexRouter::LocalProcMsg | ( | comID | id | ) | [private] |
Definition at line 366 of file de.C.
References ComlibPrintf(), Dim, Router::Done(), PeTable::ExtractAndDeliverLocalMsgs(), InitVars(), mymax(), MyPe, neighbor(), NumPes, PeHcube, PeHcube1, and PeTable::Purge().
Referenced by DummyEP(), ProcManyMsg(), RecvManyMsg(), and start_hcube().
| void DimexRouter::start_hcube | ( | comID | id | ) | [private] |
Definition at line 212 of file de.C.
References CmiAlloc(), CmiFree(), ComlibPrintf(), Dim, InitCounter, LocalProcMsg(), MyPe, neighbor(), NumPes, PeHcube, RecvManyMsg(), and stage.
Referenced by EachToManyMulticast(), and EachToManyMulticastQ().
Insert messages for the all to all operation, All processors will be multicast the same message here.
Reimplemented from Router.
Definition at line 168 of file de.C.
References CmiAlloc(), CmiFree(), EachToManyMulticast(), and NumPes.
| void DimexRouter::EachToManyMulticast | ( | comID | id, | |
| int | size, | |||
| void * | msg, | |||
| int | numPes, | |||
| int * | pelist, | |||
| int | more | |||
| ) | [virtual] |
Insert messages for the all to all operation, The destination processors to which a message is multicast to be can be specified.
| id | communication operation identifier | |
| size | size of the message | |
| msg | message to be sent | |
| numPes | number of processors the message has to be sent to | |
| pelist | list of relative proc ids the message has to be multicast to |
Reimplemented from Router.
Definition at line 182 of file de.C.
References PeTable::InsertMsgs(), PeHcube, SetID(), and start_hcube().
Referenced by EachToAllMulticast().
| void DimexRouter::EachToManyMulticastQ | ( | comID | id, | |
| CkQ< MessageHolder * > & | msgq | |||
| ) | [virtual] |
Same as EachToManyMulticast, only it receives all the messages into a list.
Reimplemented from Router.
Definition at line 196 of file de.C.
References CkQ< T >::deq(), MessageHolder::getMessage(), PeTable::InsertMsgs(), CkQ< T >::length(), length, MessageHolder::npes, PeHcube, MessageHolder::pelist, SetID(), MessageHolder::size, and start_hcube().
| void DimexRouter::RecvManyMsg | ( | comID | id, | |
| char * | msg | |||
| ) | [virtual] |
Reimplemented from Router.
Definition at line 243 of file de.C.
References CmiAlloc(), CmiFree(), Converse::CmiSyncListSendAndFree(), CmiSyncVectorSend(), ComlibPrintf(), ptvectorlist::count, Dim, PeTable::ExtractAndPackAll(), PeTable::ExtractAndVectorizeAll(), InitCounter, LocalProcMsg(), ptvectorlist::msgs, MyPe, neighbor(), next, numDirectSteps, NumPes, PeHcube, penum, setIC(), ptvectorlist::sizes, stage, two_pow_ndirect, and PeTable::UnpackAndInsert().
Referenced by DummyEP(), and start_hcube().
| void DimexRouter::ProcManyMsg | ( | comID | id, | |
| char * | m | |||
| ) | [virtual] |
Reimplemented from Router.
Definition at line 333 of file de.C.
References ComlibPrintf(), Dim, InitCounter, LocalProcMsg(), MyPe, neighbor(), NumPes, PeHcube, PeHcube1, procMsgCount, setIC(), stage, two_pow_ndirect, PeTable::UnpackAndInsert(), and PeTable::UnpackAndInsertAll().
Reimplemented from Router.
Definition at line 400 of file de.C.
References LocalProcMsg(), and RecvManyMsg().
| void DimexRouter::SetMap | ( | int * | ) | [virtual] |
| void DimexRouter::SetID | ( | comID | id | ) |
Definition at line 446 of file de.C.
References numDirectSteps, and two_pow_ndirect.
Referenced by EachToManyMulticast(), and EachToManyMulticastQ().
PeTable* DimexRouter::PeHcube [private] |
Definition at line 11 of file de.h.
Referenced by DimexRouter(), EachToManyMulticast(), EachToManyMulticastQ(), LocalProcMsg(), ProcManyMsg(), RecvManyMsg(), start_hcube(), and ~DimexRouter().
PeTable * DimexRouter::PeHcube1 [private] |
Definition at line 11 of file de.h.
Referenced by DimexRouter(), LocalProcMsg(), ProcManyMsg(), and ~DimexRouter().
int* DimexRouter::buffer [private] |
int* DimexRouter::msgnum [private] |
int DimexRouter::InitCounter [private] |
Definition at line 13 of file de.h.
Referenced by InitVars(), ProcManyMsg(), RecvManyMsg(), and start_hcube().
int* DimexRouter::penum [private] |
Definition at line 14 of file de.h.
Referenced by CreateStageTable(), DimexRouter(), RecvManyMsg(), and ~DimexRouter().
int * DimexRouter::gpes [private] |
int** DimexRouter::next [private] |
Definition at line 15 of file de.h.
Referenced by CreateStageTable(), DimexRouter(), RecvManyMsg(), and ~DimexRouter().
int DimexRouter::Dim [private] |
Definition at line 16 of file de.h.
Referenced by CreateStageTable(), DimexRouter(), InitVars(), LocalProcMsg(), ProcManyMsg(), RecvManyMsg(), start_hcube(), and ~DimexRouter().
int DimexRouter::stage [private] |
Definition at line 16 of file de.h.
Referenced by InitVars(), ProcManyMsg(), RecvManyMsg(), and start_hcube().
int DimexRouter::MyPe [private] |
Definition at line 16 of file de.h.
Referenced by CreateStageTable(), DimexRouter(), InitVars(), LocalProcMsg(), ProcManyMsg(), RecvManyMsg(), and start_hcube().
int DimexRouter::NumPes [private] |
Definition at line 16 of file de.h.
Referenced by DimexRouter(), EachToAllMulticast(), InitVars(), LocalProcMsg(), ProcManyMsg(), RecvManyMsg(), and start_hcube().
int DimexRouter::numDirectSteps [private] |
int DimexRouter::two_pow_ndirect [private] |
Definition at line 16 of file de.h.
Referenced by DimexRouter(), ProcManyMsg(), RecvManyMsg(), and SetID().
int DimexRouter::procMsgCount [private] |
1.5.5