4 This script acts as a wrapper in order to generate Gaudi configs for running 5 with different parameters in order to perform performance measurements. 6 It takes command line arguments. 12 NumberOfEventsInFlight = 5 13 NumberOfAlgosInFlight = 5 20 usage=
"%prog [options]" 21 parser = optparse.OptionParser(usage)
22 parser.add_option(
'-n', help=
'Number of events', dest=
'nevts', default=15)
23 parser.add_option(
'--eif', help=
'Events in flight', dest=
'eif', default=5)
24 parser.add_option(
'--aif', help=
'Algos in flight', dest=
'aif', default=10)
25 parser.add_option(
'--nthreads', help=
'Number of threads', dest=
'nthreads', default=10)
26 parser.add_option(
'--clone', help=
'Clone Algos',dest=
'clone', action=
'store_true', default=
False)
27 parser.add_option(
'--dumpQueues', help=
'Dump Queues',dest=
'dumpqueues', action=
'store_true', default=
False)
28 parser.add_option(
'-v', help=
'Verbosity level', dest=
'verbosity', default=5)
29 parser.add_option(
'--exec', help=
'ExecuteWorkflow',dest=
'execbrunel', action=
'store_true', default=
False)
30 parser.add_option(
'--bg', help=
'Launch in background',dest=
'bg', action=
'store_true', default=
False)
31 parser.add_option(
'--scale', help=
'Scale Algorithms time',dest=
'scale', default=1)
32 options,args = parser.parse_args()
36 def replaceValues(cfg_name,n,eif,aif,nthreads,scale,clone,dumpQueues,verbosity):
38 newcfglines=open(cfg_name,
"r").readlines() 39 cfg_name=cfg_name.replace(".py",
"")
46 newcfgname=
"measurement_%s_n%s_eif%s_aif%s_nthreads%s_c%s_dq%s%s%s.py" %(cfg_name,n,eif,aif,nthreads,clone,dumpQueues,scale_s,verb)
47 newcfg=open(newcfgname,
"w")
48 for line
in newcfglines:
49 if (
'NumberOfEvents' in line
and 'NUMBEROFEVENTS' in line
and not "FLIGHT" in line):
50 line=line.replace(
"NUMBEROFEVENTS",str(n))
51 if (
'NumberOfEventsInFlight' in line
and 'NUMBEROFEVENTSINFLIGHT' in line):
52 line=line.replace(
"NUMBEROFEVENTSINFLIGHT",str(eif))
53 if (
'NumberOfAlgosInFlight' in line
and 'NUMBEROFALGOSINFLIGHT' in line):
54 line=line.replace(
"NUMBEROFALGOSINFLIGHT",str(aif))
55 if (
'NumberOfThreads' in line
and 'NUMBEROFTHREADS' in line):
56 line=line.replace(
"NUMBEROFTHREADS",str(nthreads))
57 if (
'DumpQueues'in line
and 'DUMPQUEUES' in line):
58 line=line.replace(
"DUMPQUEUES",str(dumpQueues))
59 if (
'CloneAlgos'in line
and 'CLONEALGOS' in line):
60 line=line.replace(
"CLONEALGOS",str(clone))
61 if (
'Verbosity'in line
and 'VERBOSITY' in line):
62 line=line.replace(
"VERBOSITY",str(verbosity))
63 if (
'Scale'in line
and 'SCALE' in line):
64 line=line.replace(
"SCALE",str(scale))
70 if __name__ ==
"__main__":
82 logfile = newcfg.replace(
".py",
".log")
83 gaudirun=
"`alias gaudirun`" 84 gaudirun =
"/afs/cern.ch/user/d/dpiparo/Gaudi/build.x86_64-slc5-gcc46-opt/run gaudirun.py" 85 command =
"/usr/bin/time -f %%S -o timing_%s %s %s >& %s " %(logfile, gaudirun, newcfg,logfile)
90 if options.execbrunel :
def replaceValues(cfg_name, n, eif, aif, nthreads, scale, clone, dumpQueues, verbosity)