diff options
| author | Florian Fischer <florian.fl.fischer@fau.de> | 2019-03-25 17:49:39 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fl.fischer@fau.de> | 2019-03-25 17:49:39 +0100 |
| commit | 25c4d81069f576354d0279bf38417c236e924540 (patch) | |
| tree | e5b953bc96220f07c86bf01ac0f900751b08543e /src/falsesharing.py | |
| parent | 5c4ee34ec788ab0a59fe10c125452323d4b67d98 (diff) | |
| download | allocbench-25c4d81069f576354d0279bf38417c236e924540.tar.gz allocbench-25c4d81069f576354d0279bf38417c236e924540.zip | |
move benchmark definitions into src/benchmarks
bench now loads all *.py files from src/benchmarks as benchmarks
Diffstat (limited to 'src/falsesharing.py')
| -rw-r--r-- | src/falsesharing.py | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/src/falsesharing.py b/src/falsesharing.py deleted file mode 100644 index f6375a6..0000000 --- a/src/falsesharing.py +++ /dev/null @@ -1,74 +0,0 @@ -import matplotlib.pyplot as plt -import numpy as np -import re - -from src.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 = "cache-{bench}{binary_suffix} {threads} 100 8 1000000" - - self.args = { - "bench": ["thrash", "scratch"], - "threads": Benchmark.scale_threads_for_cpus(2) - } - - self.requirements = ["cache-thrash", "cache-scratch"] - super().__init__() - - def process_output(self, result, stdout, stderr, allocator, perm, verbose): - result["time"] = time_re.match(stdout).group("time") - - def summary(self): - # Speedup thrash - args = self.results["args"] - nthreads = args["threads"] - allocators = self.results["allocators"] - - 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]]) - - for perm in self.iterate_args_fixed({"bench": bench}, args=args): - - d = [float(m["time"]) for m in self.results[allocator][perm]] - - y_vals.append(single_threaded / np.mean(d)) - - 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(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", - 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", - fixed=["bench"]) - - -falsesharing = Benchmark_Falsesharing() |
