The Gaudi Framework  v29r0 (ff2e7097)
BrunelScenarioAvalancheScheduler.py
Go to the documentation of this file.
1 #!/usr/bin/env gaudirun.py
2 
3 from Gaudi.Configuration import *
4 from Configurables import HiveWhiteBoard, HiveSlimEventLoopMgr, AvalancheSchedulerSvc, AlgResourcePool
5 
6 # convenience machinery for assembling custom graphs of algorithm precedence rules (w/ CPUCrunchers as algorithms)
7 try:
8  from GaudiHive import precedence
9 except ImportError:
10  # of versions of LCG/heptools do not provide the required package networkx
11  import sys
12  sys.exit(77) # consider the test skipped
13 
14 # metaconfig
15 evtslots = 1
16 evtMax = 1
17 cardinality = 1
18 algosInFlight = 4
19 algoAvgTime = 0.02
20 
21 
22 InertMessageSvc(OutputLevel=INFO)
23 
24 whiteboard = HiveWhiteBoard("EventDataSvc",
25  EventSlots=evtslots,
26  OutputLevel=INFO,
27  ForceLeaves=True)
28 
29 slimeventloopmgr = HiveSlimEventLoopMgr(
30  SchedulerName="AvalancheSchedulerSvc", OutputLevel=INFO)
31 
32 scheduler = AvalancheSchedulerSvc(ThreadPoolSize=algosInFlight,
33  OutputLevel=DEBUG,
34  Optimizer="DRE",
35  PreemptiveIOBoundTasks=False,
36  DumpIntraEventDynamics=False)
37 
38 AlgResourcePool(OutputLevel=DEBUG)
39 
40 timeValue = precedence.UniformTimeValue(algoAvgTime)
41 ifIObound = precedence.UniformBooleanValue(False)
42 #ifIObound = precedence.RndBiased10BooleanValue()
43 
44 
45 sequencer = precedence.CruncherSequence(timeValue, ifIObound, sleepFraction=0.0,
46  cfgPath="lhcb/reco/cf_dependencies.graphml",
47  dfgPath="lhcb/reco/data_dependencies.graphml",
48  topSequencer='GaudiSequencer/BrunelSequencer').get()
49 
50 ApplicationMgr(EvtMax=evtMax,
51  EvtSel='NONE',
52  ExtSvc=[whiteboard],
53  EventLoop=slimeventloopmgr,
54  TopAlg=[sequencer],
55  MessageSvcType="InertMessageSvc",
56  OutputLevel=INFO)
Thread safe extension to the standard MessageSvc.
The Application Manager class.