
00001 00007 #include "ComlibStats.h" 00008 #include "ComlibManager.h" 00009 00010 ComlibGlobalStats::ComlibGlobalStats() { 00011 statsArr = new ComlibLocalStats[CkNumPes()]; 00012 _MEMCHECK(statsArr); 00013 } 00014 00015 void ComlibGlobalStats::updateStats(ComlibLocalStats &stats, int p) { 00016 statsArr[p] = stats; 00017 } 00018 00019 void ComlibGlobalStats::getAverageStats(int sid, double &avMsgSize, 00020 double &avNumMessages, 00021 double &avDegree, 00022 double &npes) { 00023 00024 double bytes = 0, messages = 0, degree = 0; 00025 npes = avNumMessages = avMsgSize = avDegree = 0.0; 00026 00027 for(int count = 0; count < CkNumPes(); count ++) { 00028 if(statsArr[count].cdata[sid].isRecorded()) { 00029 npes ++; 00030 //count send and received 00031 bytes += statsArr[count].cdata[sid].getTotalBytes(); 00032 //count send and received 00033 messages += statsArr[count].cdata[sid].getTotalMessages(); 00034 degree += statsArr[count].cdata[sid].getDegree(); 00035 } 00036 } 00037 00038 if(npes > 0.0 && messages > 0.0) { 00039 avNumMessages = messages/npes; 00040 avMsgSize = bytes/ (npes * avNumMessages); 00041 avDegree = degree/npes; 00042 } 00043 } 00044 00045
1.5.5