The Gaudi Framework  master (37c0b60a)
brunelWrapper.py
Go to the documentation of this file.
1 #! /usr/bin/env python3
2 
12 """
13 This script acts as a wrapper in order to generate Gaudi configs for running
14 with different parameters in order to perform performance measurements.
15 It takes command line arguments.
16 """
17 
18 import optparse
19 
20 """
21 NumberOfEvents = 10
22 NumberOfEventsInFlight = 5
23 NumberOfAlgosInFlight = 5
24 NumberOfThreads = 10
25 CloneAlgos = False
26 DumpQueues = False
27 """
28 
29 
31  usage = "%prog [options]"
32  parser = optparse.OptionParser(usage)
33  parser.add_option("-n", help="Number of events", dest="nevts", default=15)
34  parser.add_option("--eif", help="Events in flight", dest="eif", default=5)
35  parser.add_option("--aif", help="Algos in flight", dest="aif", default=10)
36  parser.add_option(
37  "--nthreads", help="Number of threads", dest="nthreads", default=10
38  )
39  parser.add_option(
40  "--clone", help="Clone Algos", dest="clone", action="store_true", default=False
41  )
42  parser.add_option(
43  "--dumpQueues",
44  help="Dump Queues",
45  dest="dumpqueues",
46  action="store_true",
47  default=False,
48  )
49  parser.add_option("-v", help="Verbosity level", dest="verbosity", default=5)
50  parser.add_option(
51  "--exec",
52  help="ExecuteWorkflow",
53  dest="execbrunel",
54  action="store_true",
55  default=False,
56  )
57  parser.add_option(
58  "--bg",
59  help="Launch in background",
60  dest="bg",
61  action="store_true",
62  default=False,
63  )
64  parser.add_option("--scale", help="Scale Algorithms time", dest="scale", default=1)
65  options, args = parser.parse_args()
66  return options
67 
68 
69 def replaceValues(cfg_name, n, eif, aif, nthreads, scale, clone, dumpQueues, verbosity):
70  newcfglines = open(cfg_name, "r").readlines()
71  cfg_name = cfg_name.replace(".py", "")
72  verb = ""
73  if verbosity != 6:
74  verb = "_v%s" % verbosity
75  scale_s = ""
76  if scale != 1:
77  scale_s = "_s%s" % scale
78  newcfgname = "measurement_%s_n%s_eif%s_aif%s_nthreads%s_c%s_dq%s%s%s.py" % (
79  cfg_name,
80  n,
81  eif,
82  aif,
83  nthreads,
84  clone,
85  dumpQueues,
86  scale_s,
87  verb,
88  )
89  newcfg = open(newcfgname, "w")
90  for line in newcfglines:
91  if (
92  "NumberOfEvents" in line
93  and "NUMBEROFEVENTS" in line
94  and "FLIGHT" not in line
95  ):
96  line = line.replace("NUMBEROFEVENTS", str(n))
97  if "NumberOfEventsInFlight" in line and "NUMBEROFEVENTSINFLIGHT" in line:
98  line = line.replace("NUMBEROFEVENTSINFLIGHT", str(eif))
99  if "NumberOfAlgosInFlight" in line and "NUMBEROFALGOSINFLIGHT" in line:
100  line = line.replace("NUMBEROFALGOSINFLIGHT", str(aif))
101  if "NumberOfThreads" in line and "NUMBEROFTHREADS" in line:
102  line = line.replace("NUMBEROFTHREADS", str(nthreads))
103  if "DumpQueues" in line and "DUMPQUEUES" in line:
104  line = line.replace("DUMPQUEUES", str(dumpQueues))
105  if "CloneAlgos" in line and "CLONEALGOS" in line:
106  line = line.replace("CLONEALGOS", str(clone))
107  if "Verbosity" in line and "VERBOSITY" in line:
108  line = line.replace("VERBOSITY", str(verbosity))
109  if "Scale" in line and "SCALE" in line:
110  line = line.replace("SCALE", str(scale))
111  newcfg.write(line)
112  newcfg.close()
113  return newcfgname
114 
115 
116 if __name__ == "__main__":
117  options = createParser()
118  newcfg = replaceValues(
119  "BrunelScenario.py",
120  options.nevts,
121  options.eif,
122  options.aif,
123  options.nthreads,
124  float(options.scale),
125  options.clone,
126  options.dumpqueues,
127  options.verbosity,
128  )
129 
130  logfile = newcfg.replace(".py", ".log")
131  gaudirun = "`alias gaudirun`"
132  gaudirun = (
133  "/afs/cern.ch/user/d/dpiparo/Gaudi/build.x86_64-slc5-gcc46-opt/run gaudirun.py"
134  )
135  command = "/usr/bin/time -f %%S -o timing_%s %s %s >& %s " % (
136  logfile,
137  gaudirun,
138  newcfg,
139  logfile,
140  )
141  if options.bg:
142  command += " &"
143 
144  print(command)
145  if options.execbrunel:
146  import os
147 
148  os.system(command)
brunelWrapper.replaceValues
def replaceValues(cfg_name, n, eif, aif, nthreads, scale, clone, dumpQueues, verbosity)
Definition: brunelWrapper.py:69
brunelWrapper.createParser
def createParser()
Definition: brunelWrapper.py:30