All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
BrunelScenarioForwardScheduler Namespace Reference

Functions

def load_brunel_scenario (filename)
 

Variables

int NUMBEROFEVENTS = 23
 
int NUMBEROFEVENTSINFLIGHT = 7
 
int NUMBEROFALGOSINFLIGHT = 11
 
int NUMBEROFTHREADS = 2
 
int CARDINALITY = 11
 
int SCALE = .1
 
int VERBOSITY = 5
 
 NumberOfEvents = NUMBEROFEVENTS
 
 NumberOfEventsInFlight = NUMBEROFEVENTSINFLIGHT
 
 NumberOfAlgosInFlight = NUMBEROFALGOSINFLIGHT
 
 NumberOfThreads = NUMBEROFTHREADS
 
 Cardinality = CARDINALITY
 
 Scale = SCALE
 
 Verbosity = VERBOSITY
 
 ms = MessageSvc()
 
 OutputLevel
 
 crunchers
 
 inputs
 
 whiteboard
 
 slimeventloopmgr = HiveSlimEventLoopMgr(OutputLevel = INFO)
 
 scheduler
 
 app = ApplicationMgr()
 
 TopAlg
 
 EvtSel
 
 EvtMax
 
 EventLoop
 
 ExtSvc
 
 MessageSvcType
 

Function Documentation

def BrunelScenarioForwardScheduler.load_brunel_scenario (   filename)

Definition at line 28 of file BrunelScenarioForwardScheduler.py.

28 def load_brunel_scenario(filename):
29  algs = {}
30  timing = {}
31  objs = []
32  curr = None
33  order = 0
34  nodes = ('/Event', '/Event/Rec', '/Event/DAQ')
35  for l in open(filename).readlines():
36  if l.find('StoreTracer') == 0:
37  if l.find('Executing Algorithm') != -1:
38  alg = l.split()[-1]
39  if alg not in algs.keys() : algs[alg] = (order, set(),set())
40  curr = alg
41  order += 1
42  elif l.find('Done with Algorithm') != -1:
43  curr = None
44  elif l.find('[EventDataSvc]') != -1 and curr:
45  obj = l.split()[-1]
46  if obj in nodes : continue
47  if obj.find('/Event/') == 0 : obj = obj[7:]
48  obj = obj.replace('/','_')
49  if obj not in objs : objs.append(obj)
50  talg = algs[curr]
51  if l.find('RETRIEVE') != -1:
52  if obj not in talg[1] : talg[1].add(obj)
53  elif l.find('REGOBJ') != -1:
54  if obj not in talg[2] : talg[2].add(obj)
55  if l.find("TimingAuditor") != -1:
56  algo = l.split()[2]#.rstrip("|")
57  index = 13
58  if algo.endswith("|"):
59  index = 12
60  algo = algo.rstrip("|")
61  if algo in algs.keys():
62  timing[algo] = l.split()[index]
63  else:
64  for name in algs.keys():
65  if name.startswith(algo):
66  timing[name] = l.split()[index]
67 
68  all_inputs = set()
69  all_outputs = set()
70  all_algos = []
71  all_algos_inputs = []
72 
73  #Scale all algo timings if needed
74  if Scale!=-1:
75  for alg in timing.keys():
76  old_timing = float(timing[alg])
77  new_timing = old_timing*Scale;
78  #print "Algorithm %s: %f --> %f" %(alg, old_timing, new_timing)
79  timing[alg]=new_timing
80 
81  for i, (alg,deps) in enumerate(algs.items()):
82  if alg in ["PatPVOffline","PrsADCs"]: continue
83  if deps[1] or deps[2] :
84  inputs = []
85  inputs = [item for item in deps[1] if item not in ("DAQ_ODIN","DAQ_RawEvent") and item not in deps[2]]
86  outputs = [item for item in deps[2]]
87  new_algo = CPUCruncher(alg,
88  avgRuntime=float(timing[alg]),
89  inpKeys=map( lambda s: "/Event/"+s, inputs),
90  outKeys=map( lambda s: "/Event/"+s, outputs),
91  # DataInputs=map( lambda s: "/Event/"+s, inputs),
92  # DataOutputs=map( lambda s: "/Event/"+s, outputs),
93  OutputLevel = 6,
94  shortCalib=True
95  )
96 
97  for item in deps[1]:
98  all_inputs.add(item)
99  for item in deps[2]:
100  all_outputs.add(item)
101  all_algos.append(new_algo)
102  all_algos_inputs.append(inputs)
103  #look for the objects that haven't been provided within the job. Assume this needs to come via input
104  new_algo = CPUCruncher("input",
105  avgRuntime=1,
106  inpKeys=[],
107  outKeys=map( lambda s: "/Event/"+s, [item for item in all_inputs.difference(all_outputs)]),
108  OutputLevel = WARNING
109  )
110  all_algos.append(new_algo)
111  all_algos_inputs.append([])
112  for algo in all_algos:
113  algo.Cardinality=Cardinality
114  OutputLevel = WARNING
115 
116  return all_algos,all_algos_inputs
117 
118 
119 # Set output level threshold 2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL )
struct GAUDI_API map
Parametrisation class for map-like implementation.

Variable Documentation

BrunelScenarioForwardScheduler.app = ApplicationMgr()

Definition at line 137 of file BrunelScenarioForwardScheduler.py.

int BrunelScenarioForwardScheduler.CARDINALITY = 11

Definition at line 11 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.Cardinality = CARDINALITY

Definition at line 19 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.crunchers

Definition at line 123 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.EventLoop

Definition at line 141 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.EvtMax

Definition at line 140 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.EvtSel

Definition at line 139 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.ExtSvc

Definition at line 142 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.inputs

Definition at line 123 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.MessageSvcType

Definition at line 143 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.ms = MessageSvc()

Definition at line 120 of file BrunelScenarioForwardScheduler.py.

int BrunelScenarioForwardScheduler.NUMBEROFALGOSINFLIGHT = 11

Definition at line 9 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.NumberOfAlgosInFlight = NUMBEROFALGOSINFLIGHT

Definition at line 17 of file BrunelScenarioForwardScheduler.py.

int BrunelScenarioForwardScheduler.NUMBEROFEVENTS = 23

Definition at line 7 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.NumberOfEvents = NUMBEROFEVENTS

Definition at line 15 of file BrunelScenarioForwardScheduler.py.

int BrunelScenarioForwardScheduler.NUMBEROFEVENTSINFLIGHT = 7

Definition at line 8 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.NumberOfEventsInFlight = NUMBEROFEVENTSINFLIGHT

Definition at line 16 of file BrunelScenarioForwardScheduler.py.

int BrunelScenarioForwardScheduler.NUMBEROFTHREADS = 2

Definition at line 10 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.NumberOfThreads = NUMBEROFTHREADS

Definition at line 18 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.OutputLevel

Definition at line 121 of file BrunelScenarioForwardScheduler.py.

int BrunelScenarioForwardScheduler.SCALE = .1

Definition at line 12 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.Scale = SCALE

Definition at line 20 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.scheduler
Initial value:
1 = ForwardSchedulerSvc(MaxEventsInFlight = NumberOfEventsInFlight,
2  MaxAlgosInFlight = NumberOfAlgosInFlight,
3  ThreadPoolSize = NumberOfThreads,
4  OutputLevel = INFO
5  )

Definition at line 130 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.slimeventloopmgr = HiveSlimEventLoopMgr(OutputLevel = INFO)

Definition at line 128 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.TopAlg

Definition at line 138 of file BrunelScenarioForwardScheduler.py.

int BrunelScenarioForwardScheduler.VERBOSITY = 5

Definition at line 13 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.Verbosity = VERBOSITY

Definition at line 21 of file BrunelScenarioForwardScheduler.py.

BrunelScenarioForwardScheduler.whiteboard
Initial value:
1 = HiveWhiteBoard("EventDataSvc",
2  EventSlots = NumberOfEventsInFlight)

Definition at line 125 of file BrunelScenarioForwardScheduler.py.