The Gaudi Framework
master (bdbe7744)
Toggle main menu visibility
Loading...
Searching...
No Matches
plotSpeedup.py
Go to the documentation of this file.
1
#! /usr/bin/env python3
2
12
"""
13
Script that fetches all the logfiles from disk and reads the timings.
14
Parameters can be changed according to the working points considered.
15
Some parameters of the plots are hardcoded.
16
"""
17
18
import
ROOT
19
20
n_algos_in_flight_l = [1, 2, 5, 7, 10, 16, 20, 22]
21
n_evts_in_flight_l = [1, 2, 4, 6, 7, 8, 9, 11, 13, 14, 15]
22
colour_l = [
23
ROOT.kRed,
24
ROOT.kBlue,
25
ROOT.kOrange,
26
ROOT.kGreen,
27
ROOT.kMagenta,
28
ROOT.kCyan,
29
] * 2
30
line_style_l = [1] * 6 + [2] * 6
31
cloneFlag_l = [
True
,
False
]
32
"""
33
To be filled with files on disk of the form
34
timing_measurement_BrunelScenario_n150_eif2_aif20_nthreads24_cFalse_dqFalse.log
35
"""
36
filename_scheleton = (
37
"timing_measurement_BrunelScenario_n150_eif%s_aif%s_nthreads24_c%s_dqFalse.log"
38
)
39
40
41
def
getRuntime
(n_algos_in_flight, n_evts_in_flight, cloneFlag):
42
filename = filename_scheleton % (n_evts_in_flight, n_algos_in_flight, cloneFlag)
43
print(filename)
44
rt = 0.0
45
for
line
in
open(filename).readlines():
46
rt = float(line[:-1])
47
# print filename
48
# print rt
49
return
rt
50
51
52
"""
53
Dictionary with
54
o Key = [n_algos_in_flight, n_evts_in_flight, cloneFlag]
55
o Val = Runtime
56
"""
57
58
59
def
getRuntimes
():
60
runtimes = {}
61
for
n_algos_in_flight
in
n_algos_in_flight_l:
62
for
n_evts_in_flight
in
n_evts_in_flight_l:
63
for
cloneFlag
in
cloneFlag_l:
64
rt =
getRuntime
(n_algos_in_flight, n_evts_in_flight, cloneFlag)
65
runtimes[n_algos_in_flight, n_evts_in_flight, cloneFlag] = rt
66
return
runtimes
67
68
69
def
getGraphPoints
(n_evts_in_flight, cloneFlag, runtimes):
70
points = []
71
for
key, rt
in
runtimes.items():
72
this_n_algos_in_flight, this_n_evts_in_flight, this_cloneFlag = key
73
if
this_n_evts_in_flight == n_evts_in_flight
and
this_cloneFlag == cloneFlag:
74
points.append((this_n_algos_in_flight, rt))
75
return
sorted(points)
76
77
78
def
getSingleGraph
(n_evts_in_flight, cloneFlag, runtimes, colour, style):
79
points =
getGraphPoints
(n_evts_in_flight, cloneFlag, runtimes)
80
graph = ROOT.TGraph(len(points))
81
graph.GetXaxis().SetTitle(
"Maximum # in flight algos"
)
82
graph.GetXaxis().SetRangeUser(0, 23)
83
graph.GetYaxis().SetTitle(
"Runtime [s]"
)
84
graph.GetYaxis().SetTitleOffset(1.45)
85
graph.GetYaxis().SetRangeUser(0.1, 275)
86
graph.GetYaxis().SetNdivisions(12, 5, 1)
87
graph.SetLineWidth(3)
88
graph.SetLineColor(colour)
89
graph.SetMarkerColor(colour)
90
graph.SetLineStyle(style)
91
graph.SetFillColor(ROOT.kWhite)
92
point_n = 0
93
# print points
94
for
x, y
in
points:
95
graph.SetPoint(point_n, x, y)
96
point_n += 1
97
return
graph
98
99
100
def
make_plot
(runtimes, cloneFlag):
101
title =
"Brunel 150 events"
102
clone_string =
""
103
if
cloneFlag:
104
clone_string =
"_clone"
105
title +=
" (Cloning)"
106
plotname = f
"runtime{clone_string}.pdf"
107
108
canvas = ROOT.TCanvas(plotname,
"plot"
, 500, 400)
109
canvas.SetGrid()
110
canvas.cd()
111
112
graphs = []
113
first =
True
114
for
colour, n_evts_in_flight, line_style
in
zip(
115
colour_l, n_evts_in_flight_l, line_style_l
116
):
117
print(n_evts_in_flight)
118
graph =
getSingleGraph
(
119
n_evts_in_flight, cloneFlag, runtimes, colour, line_style
120
)
121
opts =
"LSame"
122
if
first:
123
opts =
"AL"
124
first =
False
125
graph.SetTitle(title)
126
graph.Draw(opts)
127
graphs.append(graph)
128
129
# Make Legend
130
legend = ROOT.TLegend(0.499, 0.45, 0.9, 0.9,
"# Parallel Events"
)
131
legend.SetTextSize(0.04)
132
legend.SetFillColor(ROOT.kWhite)
133
# evil
134
for
graph, n
in
zip(graphs, n_evts_in_flight_l):
135
legend.AddEntry(graph, f
"{n}"
)
136
legend.Draw()
137
138
# Add some text
139
l = ROOT.TLatex(0.13, 0.16,
"#font[12]{#scale[.8]{24 Threads}}"
)
140
l.SetNDC()
141
l.Draw()
142
143
input(
"Press enter to save..."
)
144
canvas.Print(plotname)
145
146
147
# -------------------------------------------------------------------------------
148
runtimes =
getRuntimes
()
149
150
make_plot
(runtimes,
True
)
151
152
make_plot
(runtimes,
False
)
plotSpeedup.getRuntime
getRuntime(n_algos_in_flight, n_evts_in_flight, cloneFlag)
Definition
plotSpeedup.py:41
plotSpeedup.getRuntimes
getRuntimes()
Definition
plotSpeedup.py:59
plotSpeedup.getGraphPoints
getGraphPoints(n_evts_in_flight, cloneFlag, runtimes)
Definition
plotSpeedup.py:69
plotSpeedup.make_plot
make_plot(runtimes, cloneFlag)
Definition
plotSpeedup.py:100
plotSpeedup.getSingleGraph
getSingleGraph(n_evts_in_flight, cloneFlag, runtimes, colour, style)
Definition
plotSpeedup.py:78
GaudiHive
profiling
plotSpeedup.py
Generated on
for The Gaudi Framework by
1.17.0