1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
import multiprocessing
from src.benchmark import Benchmark
class Benchmark_Loop(Benchmark):
def __init__(self):
self.name = "loop"
self.descrition = """This benchmark allocates and frees n blocks in t concurrent
threads."""
self.cmd = "loop{binary_suffix} {nthreads} 1000000 {maxsize}"
cpus = multiprocessing.cpu_count()
steps = 1
if cpus > 20:
steps = 2
if cpus > 50:
steps = 5
self.args = {"maxsize": [2 ** x for x in range(6, 16)],
"nthreads": range(1, multiprocessing.cpu_count() * 2 + 1, steps)}
self.requirements = ["loop"]
super().__init__()
def summary(self):
# Speed
self.plot_fixed_arg("perm.nthreads / (float({task-clock})/1000)",
ylabel='"MOPS/cpu-second"',
title='"Loop: " + arg + " " + str(arg_value)',
filepostfix="time")
# Memusage
self.plot_fixed_arg("int({VmHWM})",
ylabel='"VmHWM in kB"',
title='"Loop Memusage: " + arg + " " + str(arg_value)',
filepostfix="memusage")
# L1 cache misses
self.plot_fixed_arg("({L1-dcache-load-misses}/{L1-dcache-loads})*100",
ylabel='"L1 misses in %"',
title='"Loop l1 cache misses: " + arg + " " + str(arg_value)',
filepostfix="l1misses")
# Speed Matrix
self.write_best_doublearg_tex_table("perm.nthreads / (float({task-clock})/1000)",
filepostfix="memusage.matrix")
loop = Benchmark_Loop()
|