change Ckpv to Cpv in conv-com
[charm.git] / src / conv-com / graphrouter.h
1 /*****************************************************************************
2  * $Source$
3  * $Author$
4  * $Date$
5  * $Revision$
6  *****************************************************************************/
7 /**
8    @addtogroup ConvComlibRouter
9    @{
10    @file 
11    @brief Base class for graph based routers. Currently Unused????
12 */
13
14
15 #ifndef _GRAPHROUTER_H
16 #define _GRAPHROUTER_H
17
18 #include <math.h>
19 //#include <converse.h>
20 #include "petable.h"
21
22 #include "persistent.h"
23
24 class TopologyDescriptor {
25  public:
26     //TopologyDescriptor(int npes, int mype)=0;
27     //Entry methods which will define the specific graph.
28     virtual void getNeighbors(int &npes, int *pelist) = 0;
29     virtual int getNumStages() = 0;
30     virtual int getNumSteps(int stage) = 0;
31     virtual void getPesToSend(int step, int stage, int &npesToSend, 
32                               int *pelist, int &nextpe) = 0;
33     virtual int getNumMessagesExpected(int stage) = 0;
34 };
35
36 /// A generalized virtual topology based router. To make it a specific
37 /// router a new topology class needs to br created and passed to this.
38
39 /// At present this class is not used in the system!!!
40 class GraphRouter : public Router
41 {
42     PeTable *PeGraph;
43     TopologyDescriptor *tp;
44     
45     int *pesToSend, *gpes;
46     int numNeighbors, *neighborPeList, nstages;
47     
48     int MyPe, NumPes, currentIteration;
49     int *recvExpected, *recvCount;
50     int curStage, *stageComplete;
51
52     void sendMessages(comID id, int stage);
53     void init(int numPes, int myPe, TopologyDescriptor *tp);
54     
55 #if CMK_PERSISTENT_COM
56     PersistentHandle *handlerArrayOdd, *handlerArrayEven;
57 #endif          
58     
59  public:
60     GraphRouter(int numPes, int myPe, Strategy*);
61     //GraphRouter(int numPes, int myPe, int topid);
62     ~GraphRouter();
63   
64     //Router enrty methods overridden here.
65
66     void NumDeposits(comID, int);
67     void EachToAllMulticast(comID , int , void *, int);
68     void EachToManyMulticast(comID , int , void *, int, int *, int);
69     void RecvManyMsg(comID, char *);
70     void ProcManyMsg(comID, char *);
71     void DummyEP(comID id, int);
72     
73     void SetMap(int *);
74 };
75
76 #endif
77
78 /*@}*/