summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Lim <ktlim@umich.edu>2005-01-18 15:46:00 -0500
committerKevin Lim <ktlim@umich.edu>2005-01-18 15:46:00 -0500
commit554dc7831f414c14ee194169356d15bd9e5945e1 (patch)
tree8516e9fc0bd08d77b9bc45213dfdc561cf64f545
parentaed3e6780a54f2d4f008a8cf7f66e2bbdc788a0d (diff)
parent25f54857c9356b7f8608be8d45fec17d6c26bce5 (diff)
downloadgem5-554dc7831f414c14ee194169356d15bd9e5945e1.tar.xz
Merge zizzer.eecs.umich.edu:/bk/m5
into zamp.eecs.umich.edu:/z/ktlim2/m5-patched/m5-new --HG-- extra : convert_revision : c51d9a7361d8e3c23e9494640c66df8505322b00
-rw-r--r--sim/pyconfig/m5config.py13
-rwxr-xr-xutil/stats/stats.py37
2 files changed, 41 insertions, 9 deletions
diff --git a/sim/pyconfig/m5config.py b/sim/pyconfig/m5config.py
index d7c0c6507..4e2a377b0 100644
--- a/sim/pyconfig/m5config.py
+++ b/sim/pyconfig/m5config.py
@@ -35,6 +35,19 @@ def defined(key):
def define(key, value = True):
env[key] = value
+def panic(*args, **kwargs):
+ sys.exit(*args, **kwargs)
+
+def AddToPath(path):
+ path = os.path.realpath(path)
+ if os.path.isdir(path):
+ sys.path.append(path)
+
+def Import(path):
+ AddToPath(os.path.dirname(path))
+ exec('from m5config import *')
+ mpy_exec(file(path, 'r'))
+
def issequence(value):
return isinstance(value, tuple) or isinstance(value, list)
diff --git a/util/stats/stats.py b/util/stats/stats.py
index 7f3761a92..62819c397 100755
--- a/util/stats/stats.py
+++ b/util/stats/stats.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
from __future__ import division
-import re, sys
+import re, sys, math
def usage():
print '''\
@@ -255,28 +255,47 @@ def commands(options, command, args):
#loop through all the stats selected
for stat in stats:
- avg = float(stat)
+ print "%s:" % stat.name
+ print "%-30s %12s %12s %4s %5s %5s %5s" % \
+ ("run name", "average", "stdev", ">10%", ">1SDV", ">2SDV", "SAMP")
+ print "%-30s %12s %12s %4s %5s %5s %5s" % \
+ ("------------------------------", "------------",
+ "------------", "----", "-----", "-----", "-----")
#loop through all the selected runs
for run in runs:
info.display_run = run.run;
- #print run.name
- #print avg
runTicks = info.source.retTicks([ run ])
#throw away the first one, it's 0
runTicks.pop(0)
+ stat.ticks = runTicks
+ avg = float(stat)
+ stdev = 0
+ numoutsideavg = 0
+ numoutside1std = 0
+ numoutside2std = 0
#loop through all the various ticks for each run
for tick in runTicks:
stat.ticks = str(tick)
val = float(stat)
if (val < (avg * .9)) or (val > (avg * 1.1)):
- print '%s:%s is %f, which is more than 10%% of the'\
- 'mean %f' % (run.name, stat.name, stat, avg)
-
-
-
+ numoutsideavg += 1
+ stdev += pow((val-avg),2)
+ stdev = math.sqrt(stdev / len(runTicks))
+ for tick in runTicks:
+ stat.ticks = str(tick)
+ val = float(stat)
+ if (val < (avg - stdev)) or (val > (avg + stdev)):
+ numoutside1std += 1
+ if (val < (avg - (2*stdev))) or (val > (avg + (2*stdev))):
+ numoutside2std += 1
+
+ print "%-30s %12s %12s %4s %5s %5s %5s" % \
+ (run.name, "%.1f" % avg, "%.1f" % stdev,
+ "%d" % numoutsideavg, "%d" % numoutside1std,
+ "%d" % numoutside2std, "%d" % len(runTicks))
return