fixing for ft
[charm.git] / src / conv-com / hypercuberouter.h
1 /**
2    @addtogroup ConvComlibRouter
3    @{
4    @file 
5    @brief Dimensional Exchange (Hypercube) based routing strategy. 
6 */
7
8 #ifndef _HYPERCUBEROUTER_H
9 #define _HYPERCUBEROUTER_H
10 #include "petable.h"
11
12 /// Dimensional Exchange (Hypercube) based router
13 class HypercubeRouter : public Router
14 {
15  private:
16     PeTable *PeHcube, *PeHcube1;
17     int *buffer;
18     int* msgnum, InitCounter;
19     int *penum,*gpes;
20     int **next;
21     int Dim, stage, MyPe, NumPes, numDirectSteps, two_pow_ndirect;
22     int procMsgCount;
23     void InitVars();
24     void CreateStageTable(int, int *);
25     void LocalProcMsg(comID id);
26     void start_hcube(comID id);
27     
28  public:
29     
30     HypercubeRouter(int, int, Strategy*, int ndirect = 0);
31     ~HypercubeRouter();
32     void NumDeposits(comID, int);
33     void EachToAllMulticast(comID , int , void *, int);
34     void EachToManyMulticast(comID , int , void *, int, int *, int);
35     void EachToManyMulticastQ(comID id, CkQ<MessageHolder *> &msgq);
36     
37     void ProcMsg(int, msgstruct **) {;}
38     void RecvManyMsg(comID, char *);
39     void ProcManyMsg(comID, char *);
40     void DummyEP(comID id, int);
41     void SetMap(int *);
42     
43     //FIX this, some initialization done here
44     void SetID(comID id);
45 };
46 #endif
47
48 /*@}*/