merging with main branch
[charm.git] / src / ck-com / ComlibStats.C
1 /**
2    @addtogroup CharmComlib
3    @{
4    @file
5 */
6
7 #include "ComlibStats.h"
8 #include "ComlibManager.h"
9
10 ComlibGlobalStats::ComlibGlobalStats() {
11     statsArr = new ComlibLocalStats[CkNumPes()];
12     _MEMCHECK(statsArr);
13 }
14
15 void ComlibGlobalStats::updateStats(ComlibLocalStats &stats, int p) {
16     statsArr[p] = stats;
17 }
18
19 void ComlibGlobalStats::getAverageStats(int sid, double &avMsgSize, 
20                                         double &avNumMessages, 
21                                         double &avDegree,
22                                         double &npes) {
23
24     double bytes = 0, messages = 0, degree = 0;
25     npes = avNumMessages = avMsgSize = avDegree = 0.0;
26
27     for(int count = 0; count < CkNumPes(); count ++) {
28         if(statsArr[count].cdata[sid].isRecorded()) {
29             npes ++;
30             //count send and received
31             bytes += statsArr[count].cdata[sid].getTotalBytes();
32             //count send and received
33             messages += statsArr[count].cdata[sid].getTotalMessages();
34             degree += statsArr[count].cdata[sid].getDegree();
35         }
36     }
37
38     if(npes > 0.0 && messages > 0.0) {
39         avNumMessages = messages/npes;
40         avMsgSize = bytes/ (npes * avNumMessages);
41         avDegree =  degree/npes;
42     }
43 }
44
45
46 /*@}*/