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