90 perfTimer[handle].
count += 1;
92 perfTimer[handle].
total += delta;
93 perfTimer[handle].
elapsed += delta;
101 double etime =
getTick() * (double)perfTimer[handle].elapsed;
124 fprintf(
screenOut,
" Timer # Calls Avg/Call (s) Total (s) %% Loop\n");
125 fprintf(
screenOut,
"___________________________________________________________________\n");
128 double totalTime = perfTimer[ii].
total*tick;
129 if (perfTimer[ii].count > 0)
130 fprintf(
screenOut,
"%-16s%12"PRIu64
" %8.4f %8.4f %8.2f\n",
133 totalTime/(
double)perfTimer[ii].count,
135 totalTime/loopTime*100.0);
139 fprintf(
screenOut,
" Timer Rank: Min(s) Rank: Max(s) Avg(s) Stdev(s)\n");
140 fprintf(
screenOut,
"_____________________________________________________________________________\n");
144 if (perfTimer[ii].count > 0)
145 fprintf(
screenOut,
"%-16s%6d:%10.4f %6d:%10.4f %10.4f %10.4f\n",
147 perfTimer[ii].minRank, perfTimer[ii].minValue*tick,
148 perfTimer[ii].maxRank, perfTimer[ii].maxValue*tick,
149 perfTimer[ii].average*tick, perfTimer[ii].stdev*tick);
154 fprintf(
screenOut,
"\n---------------------------------------------------\n");
155 fprintf(
screenOut,
" Average atom update rate: %6.2f us/atom/task\n", atomRate);
156 fprintf(
screenOut,
"---------------------------------------------------\n\n");
167 fprintf(file,
"\nPerformance Results:\n");
168 fprintf(file,
" TotalRanks: %d\n",
getNRanks());
169 fprintf(file,
" ReportingTimeUnits: seconds\n");
170 fprintf(file,
"Performance Results For Rank %d:\n",
getMyRank());
173 if (perfTimer[ii].count > 0)
175 double totalTime = perfTimer[ii].
total*tick;
176 fprintf(file,
" Timer: %s\n",
timerName[ii]);
177 fprintf(file,
" CallCount: %"PRIu64
"\n", perfTimer[ii].count);
178 fprintf(file,
" AvgPerCall: %8.4f\n", totalTime/(
double)perfTimer[ii].count);
179 fprintf(file,
" Total: %8.4f\n", totalTime);
180 fprintf(file,
" PercentLoop: %8.2f\n", totalTime/loopTime*100);
184 fprintf(file,
"Performance Results Across Ranks:\n");
187 if (perfTimer[ii].count > 0)
189 fprintf(file,
" Timer: %s\n",
timerName[ii]);
190 fprintf(file,
" MinRank: %d\n", perfTimer[ii].minRank);
191 fprintf(file,
" MinTime: %8.4f\n", perfTimer[ii].minValue*tick);
192 fprintf(file,
" MaxRank: %d\n", perfTimer[ii].maxRank);
193 fprintf(file,
" MaxTime: %8.4f\n", perfTimer[ii].maxValue*tick);
194 fprintf(file,
" AvgTime: %8.4f\n", perfTimer[ii].average*tick);
195 fprintf(file,
" StdevTime: %8.4f\n", perfTimer[ii].stdev*tick);
213 struct timeval ptime;
215 gettimeofday(&ptime, (
struct timezone *)NULL);
216 t = ((uint64_t)1000000)*(uint64_t)ptime.tv_sec + (uint64_t)ptime.tv_usec;
227 double seconds_per_cycle = 1.0e-6;
228 return seconds_per_cycle;
238 sendBuf[ii] = (
double)perfTimer[ii].
total;
242 perfTimer[ii].average = recvBuf[ii] / (
double)
getNRanks();
249 reduceSendBuf[ii].
val = (double)perfTimer[ii].total;
268 double temp = (double)perfTimer[ii].total - perfTimer[ii].average;
269 sendBuf[ii] = temp * temp;