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