aboutsummaryrefslogtreecommitdiff
path: root/src/benchmarks/falsesharing.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/benchmarks/falsesharing.py')
-rw-r--r--src/benchmarks/falsesharing.py36
1 files changed, 20 insertions, 16 deletions
diff --git a/src/benchmarks/falsesharing.py b/src/benchmarks/falsesharing.py
index 85d0a92..203aeb8 100644
--- a/src/benchmarks/falsesharing.py
+++ b/src/benchmarks/falsesharing.py
@@ -1,32 +1,36 @@
+"""Definition of the falsesahring benchmark"""
+
+import re
+
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.$")
+TIME_RE = re.compile("^Time elapsed = (?P<time>\\d*\\.\\d*) seconds.$")
+
+
+class BenchmarkFalsesharing(Benchmark):
+ """Falsesharing benchmark.
+ 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.
+ """
-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.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")
+ result["time"] = TIME_RE.match(stdout).group("time")
def summary(self):
# Speedup thrash
@@ -40,13 +44,13 @@ class Benchmark_Falsesharing(Benchmark):
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 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]]
+ data = [float(m["time"]) for m in self.results[allocator][perm]]
- y_vals.append(single_threaded / np.mean(d))
+ y_vals.append(single_threaded / np.mean(data))
plt.plot(nthreads, y_vals, marker='.', linestyle='-',
label=allocator, color=allocators[allocator]["color"])
@@ -71,4 +75,4 @@ class Benchmark_Falsesharing(Benchmark):
fixed=["bench"])
-falsesharing = Benchmark_Falsesharing()
+falsesharing = BenchmarkFalsesharing()