aboutsummaryrefslogtreecommitdiff
path: root/falsesharing.py
diff options
context:
space:
mode:
Diffstat (limited to 'falsesharing.py')
-rw-r--r--falsesharing.py76
1 files changed, 0 insertions, 76 deletions
diff --git a/falsesharing.py b/falsesharing.py
deleted file mode 100644
index 19314da..0000000
--- a/falsesharing.py
+++ /dev/null
@@ -1,76 +0,0 @@
-import matplotlib.pyplot as plt
-import multiprocessing
-import numpy as np
-import os
-import re
-
-from benchmark import Benchmark
-
-time_re = re.compile("^Time elapsed = (?P<time>\d*\.\d*) seconds.$")
-
-class Benchmark_Falsesharing( Benchmark ):
- def __init__(self):
- self.name = "falsesharing"
- self.descrition = """This benchmarks makes small allocations and writes
- to them multiple times. If the allocated objects are
- on the same cache line the writes will be expensive because
- of cache thrashing."""
-
- self.cmd = "build/cache-{bench}{binary_suffix} {threads} 100 8 1000000"
-
- self.args = {
- "bench" : ["thrash", "scratch"],
- "threads" : range(1, multiprocessing.cpu_count() * 2 + 1)
- }
-
- self.requirements = ["build/cache-thrash", "build/cache-scratch"]
- super().__init__()
-
- def process_output(self, result, stdout, stderr, target, perm, verbose):
- result["time"] = time_re.match(stdout).group("time")
-
- def summary(self, sumdir=None):
- # Speedup thrash
- args = self.results["args"]
- nthreads = args["threads"]
- targets = self.results["targets"]
-
- for bench in self.results["args"]["bench"]:
- for target in targets:
- y_vals = []
-
- single_threaded_perm = self.Perm(bench=bench, threads=1)
- single_threaded = np.mean([float(m["time"])
- for m in self.results[target][single_threaded_perm]])
-
- for perm in self.iterate_args_fixed({"bench" : bench}, args=args):
-
- d = [float(m["time"]) for m in self.results[target][perm]]
-
- y_vals.append(single_threaded / np.mean(d))
-
- plt.plot(nthreads, y_vals, marker='.', linestyle='-', label=target,
- color=targets[target]["color"])
-
- plt.legend()
- plt.xlabel("threads")
- plt.ylabel("speedup")
- plt.title(bench + " speedup" )
- plt.savefig(os.path.join(sumdir, self.name + "." + bench + ".png"))
- plt.clf()
-
- self.plot_fixed_arg("({L1-dcache-load-misses}/{L1-dcache-loads})*100",
- ylabel="'l1 cache misses in %'",
- title = "'cache misses: ' + arg + ' ' + str(arg_value)",
- filepostfix = "l1-misses",
- sumdir=sumdir,
- fixed=["bench"])
-
- self.plot_fixed_arg("({LLC-load-misses}/{LLC-loads})*100",
- ylabel="'l1 cache misses in %'",
- title = "'LLC misses: ' + arg + ' ' + str(arg_value)",
- filepostfix = "llc-misses",
- sumdir=sumdir,
- fixed=["bench"])
-
-falsesharing = Benchmark_Falsesharing()