| The Gaudi Framework v27r1

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

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