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