4 Script to parse all the logs and produce the speedup plot.
6 plotSpeedupsPyRoot.py --> vanilla plot
7 plotSpeedupsPyRoot.py 1 --> HT scaled plot
8 The variable fname_template contains the template of the file names to be
9 opened and parsed and is FIXED for all the logs.
10 The word "seconds" is looked for in the log and then the total runtime of the
11 event loop is extracted. This allows to discard the time spent in calibration
16 fname_template=
"measurement_BrunelScenario_n100_eif%s_aif100_nthreads%s_c%s_dqFalse_v5.log"
18 neif_l=[1,2,3,5,20,30]
20 nts=[2,3,5,10,11,12,13,15,23]
22 cFlags=[
"True",
"False"]
34 MarkerStyles=[kFullCircle,
54 effective_n_threads=n_threads
55 if effective_n_threads > PhCores:
56 ht_cores = n_threads-PhCores
57 effective_n_threads = PhCores + ht_cores * HtCoreWeight
58 return effective_n_threads
62 def getText(x,y,text,scale,angle,colour,font):
63 lat = TLatex(x,y,
"#scale[%s]{#color[%s]{#font[%s]{%s}}}"%(scale,colour,font,text))
65 lat.SetTextAngle(angle)
72 graphc.SetLineStyle(LineStyle)
75 g.SetLineWidth(LineWidth)
76 g.SetMarkerSize(MarkerSize)
77 g.SetMarkerStyle(MarkerStyles[graph_counter])
78 g.SetLineColor(LineColours[graph_counter])
79 g.SetMarkerColor(LineColours[graph_counter])
85 return fname_template %(neif,nt,cFlag)
91 ifile = open(filename,
"r")
96 seconds = float(line.split(
" ")[-1])
113 print "Events in flight: %s" %neif
120 idealSpeedup = TGraph(2)
121 idealSpeedup.SetPoint(0,1,1)
122 idealSpeedup.SetPoint(1,TotalCores,TotalCores)
125 scaled_s=
" (scaled for HT)"
126 idealSpeedup.SetTitle(
"GaudiHive Speedup (Brunel, 100 evts);Thread Pool Size%s;Speedup wrt Serial Case"%scaled_s)
127 idealSpeedup.SetLineWidth(4)
128 idealSpeedup.SetLineColor(kGray-2)
129 idealSpeedup.SetLineStyle(2)
134 graph = TGraph (len_nt)
135 graph.SetName(
"%s"%neif)
136 graph.SetPoint(0,1,1)
138 graphc = TGraph (len_nt)
139 graphc.SetName(
"%s clone"%neif)
140 graphc.SetPoint(0,1,1)
147 graph.SetPoint(counter,scaled_tn,ScalarTime/time)
149 graphc.SetPoint(counter,scaled_tn,ScalarTime/timec)
152 neif_graphs.append([neif,graph,graphc])
154 neif_graphs.reverse()
157 canvas = TCanvas(
"Speedup",
"Speedup",2048,1800)
160 idealSpeedup.Draw(
"APL")
161 idealSpeedup.GetYaxis().SetRangeUser(0.1,TotalCores+1)
164 line = TLine(11,0,11,25)
165 line.SetLineColor(kRed)
170 for neif,graph,graphc
in neif_graphs:
172 graphc.Draw(
"SamePL")
175 legend = TLegend(.1,.45,.38,.9)
176 legend.SetFillColor(kWhite)
177 legend.SetHeader(
"# Simultaneous Evts")
178 for neif,graph,graphc
in neif_graphs:
179 legend.AddEntry(graph,
"%s"%neif,LegendDrawOpts)
180 legend.AddEntry(graphc,
"%s (clone)"%neif,LegendDrawOpts)
184 ph_cores=
getText(10.5,15,
"Physical Cores",LabelsSize,90,2,LabelsFont)
186 ht_cores=
getText(12.,15,
"Hardware Threaded Regime",LabelsSize,90,2,LabelsFont)
188 is_text=
getText(16,16.5,
"Ideal (linear) Speedup", LabelsSize, 45, 918, LabelsFont)
192 ht_weight=
getText(18.5,8,
"#splitline{Hardware threaded}{cores weight: %s}"%HtCoreWeight,LabelsSize,0,600,LabelsFont)
197 canvas.Print(
"GaudiHivePerfBrunelAllPoints%s.png"%scaled_s)
def createFname(neif, nt, cFlag)
def getText(x, y, text, scale, angle, colour, font)
def formatGraphs(graph, graphc)
def scaleCores(n_threads)
def xtractTiming(neif, nt, cFlag)