added tproj_on in config.
[charm.git] / examples / pose / HiSim / BlueGene / util.h
1 #ifndef __UTIL_H
2 #define  __UTIL_H
3
4 #include <stdlib.h>
5 #include <math.h>
6 #include "charm++.h"
7
8 class Config {
9 public:
10    int maxpacksize;
11    int switchVc;
12    int switchBufsize;
13    float switchC_BW;
14    int switchC_Delay;
15    int collection_interval;
16    int linkstats_on;
17    int msgstats_on;
18    int netsim_on;
19    int skip_on;
20    int check_on;
21    int tproj_on;
22    int InputBufferStart;
23    int nicStart;
24    int ChannelStart;
25    int numNodes;
26    int origNodes;
27    int switchStart;
28    int numP;
29    int receptionSerial;
30    int inputSpeedup;
31    int use_transceiver;
32    int inputBuffering;
33    int mixedBuffering;
34    int outputBuffering;
35    int loadRoutingTable;
36    int sourceRouting;
37   int NodeStart;
38   int HCAStart;
39   int DMAchannelStart;
40   int SwitchStart;
41   int VCStart;
42   int CMgrStart;       //The collective manager
43
44   int numVC;           // Number of Virtual Channels
45   int maxPacketSize;   // Maximum Packet Size (bytes)
46   int creditSize;      // Number of bytes per credit
47   int headerSize;      // Size of header in each packet
48   int numSwitches;     // Computed from number of nodes
49   int VCBufSize;       // Size of Buffer for each VC in 'Credits'
50   int HCABufSize;       // Size of Buffer for each NCA in 'Credits'
51   int channelPropDelay;   //Channel delay in ns
52   int channelBandwidth;   //Channel bandwidth in GB/s
53   int switchDelay;        //Switch delay us
54   int DMADelaySmall;      //Scheduling delay for the DMA for short messages
55   int DMADelayLarge;      //Scheduling delay for the DMA for large messages
56   int numPorts;           // Number of ports in a switch
57   int numRails;           // Number of fattrees connected to a node
58
59   int HCASendDelay;     //Computation time in HCA
60   int HCARecvDelay;     //HCA Receive overhead
61
62   int procSendOverhead;  //Processor overhead of sending messages
63   int procRecvOverhead;  //Processor overhead of receiving messages
64
65   int HCAPktSendDelay;     //Computation time in HCA for each packet
66   int HCAPktRecvDelay;     //HCA Receive overhead for each packet
67
68   int cacheInjectionThreshold;  //Size of L2 cache. Cache injection
69                                 //will make message passing much
70                                 //faster. So small messages can be
71                                 //sent this way.
72
73   int adaptiveRouting;      //Adaptive routing or static routing
74  
75  public:
76
77   Config (): check_on(0), tproj_on(0) {}
78   
79   void readConfig(CkArgMsg *m);
80   int getNumVC           () {return numVC;           }
81   int getMaxPacketSize   () {return maxPacketSize;   }
82   int getCreditSize      () {return creditSize;      }
83   int getHeaderSize      () {return headerSize;      }
84   int getNumNodes        () {return numNodes;        }
85   int getNumSwitches     () {return numSwitches;     }
86   int getVCBufSize       () {return VCBufSize;       }
87   int getHCABufSize      () {return HCABufSize;      }
88   int getChannelPropDelay() {return channelPropDelay;}
89   int getChannelBandwidth() {return channelBandwidth;}
90   int getSwitchDelay     () {return switchDelay;     }
91
92   int getDMADelaySmall   () {return DMADelaySmall;   }
93   int getDMADelayLarge   () {return DMADelayLarge;   }
94
95   int getNumPorts        () {return numPorts;        }
96   int getFanout          () {return numPorts/2;      }
97   int getNumRails        () {return numRails;        }
98
99   int getHCASendDelay    () {return HCASendDelay;    }
100   int getHCARecvDelay    () {return HCARecvDelay;    }
101   int getProcSendOverhead() {return procSendOverhead;}
102   int getProcRecvOverhead() {return procRecvOverhead;}
103
104   int getHCAPktSendDelay () {return HCAPktSendDelay; }
105   int getHCAPktRecvDelay () {return HCAPktRecvDelay; }
106
107   int getInjectionThreshold(){return cacheInjectionThreshold;}
108
109   int isAdaptiveRouting  () {return adaptiveRouting;}
110
111   int getNodeStart       () {return NodeStart;      }
112   int getHCAStart        () {return HCAStart;       }
113   int getDMAchannelStart () {return DMAchannelStart;}
114   int getSwitchStart     () {return SwitchStart;    }
115   int getVCStart         () {return VCStart;        }
116   int getChannelStart    () {return ChannelStart;   }
117   int getCollectiveManagerStart() {return CMgrStart;}
118   void setNodeStart      (int n) {NodeStart       = n;}
119   void setHCAStart       (int n) {HCAStart        = n;}
120   void setDMAchannelStart(int n) {DMAchannelStart = n;}
121   void setSwitchStart    (int n) {SwitchStart     = n;}
122   void setVCStart        (int n) {VCStart         = n;}
123   void setChannelStart   (int n) {ChannelStart    = n;}
124   void setCollectiveManagerStart(int n) {CMgrStart= n;}
125   
126 };
127
128 class MachineParams {
129 public:
130         Config *config;
131         int procs;
132         int BGnodes;
133         
134         MachineParams() {}
135 };
136
137
138 PUPbytes(Config);
139
140 #endif