aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fl.fischer@fau.de>2019-11-28 14:40:08 +0100
committerFlorian Fischer <florian.fl.fischer@fau.de>2019-11-28 14:40:08 +0100
commit00b9e18d60cc9e39bdfcf581ef2e90a1f6822f55 (patch)
tree8cfd3da80320eec96a2bc5041fcc2c70ab39d51b
parent202a79fcc8a026e5da71e5c9232d1ba128d6b5de (diff)
downloadallocbench-00b9e18d60cc9e39bdfcf581ef2e90a1f6822f55.tar.gz
allocbench-00b9e18d60cc9e39bdfcf581ef2e90a1f6822f55.zip
calculate speedup and use it for multiple summaries
-rw-r--r--src/benchmarks/falsesharing.py46
1 files changed, 23 insertions, 23 deletions
diff --git a/src/benchmarks/falsesharing.py b/src/benchmarks/falsesharing.py
index 93c2fe9..671dbc8 100644
--- a/src/benchmarks/falsesharing.py
+++ b/src/benchmarks/falsesharing.py
@@ -53,38 +53,35 @@ class BenchmarkFalsesharing(Benchmark):
result["time"] = TIME_RE.match(stdout).group("time")
def summary(self):
- # Speedup thrash
args = self.results["args"]
nthreads = args["threads"]
allocators = self.results["allocators"]
+ # calculate relevant datapoints: speedup, l1-cache-misses
for bench in self.results["args"]["bench"]:
for allocator in allocators:
- y_vals = []
-
- single_threaded_perm = self.Perm(bench=bench, threads=1)
- single_threaded = np.mean([float(m["time"])
- for m in self.results[allocator][single_threaded_perm]])
+ sequential_perm = self.Perm(bench=bench, threads=1)
for perm in self.iterate_args_fixed({"bench": bench}, args=args):
+ speedup = []
+ l1chache_misses = []
+ for i, measure in enumerate(self.results[allocator][perm]):
+ sequential_time = float(self.results[allocator][sequential_perm][i]["time"])
+ measure["speedup"] = sequential_time / float(measure["time"])
+ measure["l1chache_misses"] = eval("({L1-dcache-load-misses}/{L1-dcache-loads})*100".format(**measure))
+
+ # delete and recalculate stats
+ del self.results["stats"]
+ self.calc_desc_statistics()
+
+ self.plot_fixed_arg("{speedup}",
+ ylabel="'Speedup'",
+ title="'Speedup: ' + arg + ' ' + str(arg_value)",
+ filepostfix="speedup",
+ autoticks=False,
+ fixed=["bench"])
- data = [float(m["time"]) for m in self.results[allocator][perm]]
-
- speedup = single_threaded / np.mean(data)
- self.results["stats"][allocator][perm]["mean"]["speedup"] = speedup
- y_vals.append(speedup)
-
- plt.plot(nthreads, y_vals, marker='.', linestyle='-',
- label=allocator, color=allocators[allocator]["color"])
-
- plt.legend()
- plt.xlabel("threads")
- plt.ylabel("speedup")
- plt.title(bench + " speedup")
- plt.savefig(f"{self.name}.{bench}.{summary_file_ext}")
- plt.clf()
-
- self.plot_fixed_arg("({L1-dcache-load-misses}/{L1-dcache-loads})*100",
+ self.plot_fixed_arg("{l1chache_misses}",
ylabel="'l1 cache misses in %'",
title="'cache misses: ' + arg + ' ' + str(arg_value)",
filepostfix="l1-misses",
@@ -103,5 +100,8 @@ class BenchmarkFalsesharing(Benchmark):
"sort":">"}],
filepostfix="speedup.table")
+ self.export_stats_to_csv("speedup", "time")
+ self.export_stats_to_csv("l1chache_misses", "l1-misses")
+
falsesharing = BenchmarkFalsesharing()