Skip to content

Commit c93bde8

Browse files
author
Florian Wagner
committed
plotting of all benchmarked functions at once
1 parent 89db9d8 commit c93bde8

File tree

2 files changed

+33
-34
lines changed

2 files changed

+33
-34
lines changed

benchmarking/visualize.py

+25-26
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import itertools
1515
import seaborn as sns
1616
import pandas as pd
17+
from numpy import median
1718

1819
#%%
1920

@@ -59,37 +60,41 @@ def load_processed(filepath):
5960
processed = load_data(filepath)
6061

6162

62-
labels = []
63-
values = []
63+
times = []
64+
sizes = []
65+
time_per_element = []
66+
functions = []
6467
for k, g in itertools.groupby(processed, lambda el: (el[0],el[1])):
65-
if k[0] == 'stratified':
66-
for el in g:
67-
values.append(float(el[2]))
68-
labels.append(k[1])
68+
for el in g:
69+
times.append(float(el[2]))
70+
sizes.append(k[1])
71+
time_per_element.append(float(el[2]) / float(k[1][:-1]) ** 2)
72+
functions.append(k[0])
6973

70-
return values, labels
74+
return times, sizes, functions, time_per_element
7175

7276
#%%
7377

7478
def draw_boxplots(fig, df):
7579

7680
ax = fig.axes[0]
7781

78-
ax = sns.boxplot(x="size", y="values", hue="omp", data=df, ax=ax, linewidth=1.0, fliersize=2.0)
82+
ax = sns.barplot(x="kernel size", y="time_per_element", hue="omp", data=df, ax=ax)
7983

8084
ax.get_yaxis().set_label_text("Time (ns)")
8185

8286
# ax.set_ylim(0, 3000000)
83-
ax.set_yscale('log')
8487

88+
# ax.set_yscale('log')
8589

86-
def create_fig():
90+
91+
def create_fig(function):
8792
fig = matplotlib.figure.Figure()
8893
FigureCanvas(fig)
8994

9095
ax = fig.add_subplot(111)
91-
#ax.set_yscale('log')
92-
ax.set_title('Benchmarking times (stratified sampling)')
96+
# ax.set_yscale('log')
97+
ax.set_title('Time per element ({})'.format(function))
9398
sns.despine(ax=ax)
9499

95100

@@ -113,26 +118,20 @@ def flatten(list_of_lists):
113118

114119
sns.set(context="talk", style="white")
115120

116-
fig = create_fig()
117-
118-
data = {"size": no_omp_proc[1] + omp_proc[1],
119-
"values": no_omp_proc[0] + omp_proc[0],
121+
data = {"kernel size": no_omp_proc[1] + omp_proc[1],
122+
"times": no_omp_proc[0] + omp_proc[0],
123+
"functions": no_omp_proc[2] + omp_proc[2],
124+
"time_per_element": no_omp_proc[3] + omp_proc[3],
120125
"omp": ["No"]*len(no_omp_proc[0]) + ["Yes"] * len(omp_proc[0])}
121126

122-
data2 = {"size": flatten(zip(no_omp_proc[1], omp_proc[1])),
123-
"values": flatten(zip(no_omp_proc[0], omp_proc[0])),
124-
"omp": ["No"]*len(no_omp_proc[0])*2}
125-
126127
df = pd.DataFrame(data=data)
127128

128129
#%%
129130

130-
values = flatten(zip(no_omp_proc[0], omp_proc[0]))
131-
labels = flatten(zip(no_omp_proc[1], omp_proc[1]))
132-
133-
134-
draw_boxplots(fig, df)
131+
for function, group in df.groupby(['functions']):
132+
fig = create_fig(function)
133+
draw_boxplots(fig, group)
134+
save_fig(fig, "bench_{}.png".format(function))
135135

136-
save_fig(fig, "bench.png")
137136

138137

source/benchmarks/glkernel-benchmarks/sample_benchmark.cpp

+8-8
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ static void BM_hammersley_quad(benchmark::State& state) {
5353
state.SetComplexityN(state.range(0));
5454
}
5555

56-
static void BM_hammersley_sphere_quad(benchmark::State& state) {
56+
static void BM_hammersleySphere_quad(benchmark::State& state) {
5757
auto dkernel = glkernel::dkernel3{state.range(0), state.range(0)};
5858

5959

@@ -73,7 +73,7 @@ static void BM_halton_quad(benchmark::State& state) {
7373
state.SetComplexityN(state.range(0));
7474
}
7575

76-
static void BM_halton_sphere_quad(benchmark::State& state) {
76+
static void BM_haltonSphere_quad(benchmark::State& state) {
7777
auto dkernel = glkernel::dkernel3{state.range(0), state.range(0)};
7878

7979

@@ -93,7 +93,7 @@ static void BM_best_candidate_quad(benchmark::State& state) {
9393
state.SetComplexityN(state.range(0));
9494
}
9595

96-
static void BM_golden_point_set_quad(benchmark::State& state) {
96+
static void BM_goldenPointSet_quad(benchmark::State& state) {
9797
auto dkernel = glkernel::dkernel2{state.range(0), state.range(0)};
9898

9999

@@ -103,13 +103,13 @@ static void BM_golden_point_set_quad(benchmark::State& state) {
103103
state.SetComplexityN(state.range(0));
104104
}
105105

106-
BENCHMARK(BM_poisson_quad)->RangeMultiplier(2)->Range(8, 256)->Iterations(1)->Complexity();
106+
BENCHMARK(BM_poisson_quad)->RangeMultiplier(2)->Range(8, 128)->Iterations(1)->Complexity();
107107
BENCHMARK(BM_jittered_quad)->RangeMultiplier(2)->Range(8, 256)->Iterations(1)->Complexity();
108108
BENCHMARK(BM_rooks_quad)->RangeMultiplier(2)->Range(8, 256)->Iterations(1)->Complexity();
109109
BENCHMARK(BM_stratified_quad)->RangeMultiplier(2)->Range(8, 256)->Iterations(1)->Complexity();
110110
BENCHMARK(BM_hammersley_quad)->RangeMultiplier(2)->Range(8, 256)->Iterations(1)->Complexity();
111-
BENCHMARK(BM_hammersley_sphere_quad)->RangeMultiplier(2)->Range(8, 256)->Iterations(1)->Complexity();
111+
BENCHMARK(BM_hammersleySphere_quad)->RangeMultiplier(2)->Range(8, 256)->Iterations(1)->Complexity();
112112
BENCHMARK(BM_halton_quad)->RangeMultiplier(2)->Range(8, 256)->Iterations(1)->Complexity();
113-
BENCHMARK(BM_halton_sphere_quad)->RangeMultiplier(2)->Range(8, 256)->Iterations(1)->Complexity();
114-
BENCHMARK(BM_best_candidate_quad)->RangeMultiplier(2)->Range(8, 256)->Iterations(1)->Complexity();
115-
BENCHMARK(BM_golden_point_set_quad)->RangeMultiplier(2)->Range(8, 256)->Iterations(1)->Complexity();
113+
BENCHMARK(BM_haltonSphere_quad)->RangeMultiplier(2)->Range(8, 256)->Iterations(1)->Complexity();
114+
BENCHMARK(BM_best_candidate_quad)->RangeMultiplier(2)->Range(8, 32)->Iterations(1)->Complexity();
115+
BENCHMARK(BM_goldenPointSet_quad)->RangeMultiplier(2)->Range(8, 32)->Iterations(1)->Complexity();

0 commit comments

Comments
 (0)