13 A totally synthetic test of scheduler performance, with a large number of CF nodes and algorithms, but each algorithm does no work.
15 In the flat mode (nested=False) 1000 algorithms are added directly to the base CF node as a baseline measurement.
17 In nested mode the algorithms are grouped into sets of under a parent CF node.
18 Those nodes are then given 2 different CF node parents (20 in total) which include a prescale algorithm.
20 In sequential mode (sequence=True) the prescale algorithms will randomly deactivate CF nodes at a frequency given by filterPass
22 from Configurables
import AlgResourcePool, AvalancheSchedulerSvc
23 from Configurables
import Gaudi__Examples__Prescaler
as Prescaler
24 from Configurables
import Gaudi__Sequencer, HiveSlimEventLoopMgr, HiveWhiteBoard
43 whiteboard = HiveWhiteBoard(
"EventDataSvc", EventSlots=evtslots, OutputLevel=FATAL)
51 slimeventloopmgr = HiveSlimEventLoopMgr(
52 SchedulerName=
"AvalancheSchedulerSvc", OutputLevel=INFO
62 scheduler = AvalancheSchedulerSvc(
63 ThreadPoolSize=threads,
64 ShowControlFlow=
False,
65 ShowDataDependencies=
False,
73 AlgResourcePool(OutputLevel=FATAL)
81 alg.OutputLevel = FATAL
82 alg.Cardinality = cardinality
83 alg.PercentPass = 100.0
86 baseSeq = Gaudi__Sequencer(
100 seqAlgs = allAlgs[10 * i : 10 * (i + 1)]
101 seq = Gaudi__Sequencer(
112 seqSeqs = allSeqs[10 * i : 10 * (i + 1)]
115 filterAlg.OutputLevel = FATAL
116 filterAlg.Cardinality = cardinality
117 filterAlg.PercentPass = filterPass
119 seq = Gaudi__Sequencer(
121 Members=[filterAlg] + seqSeqs,
127 allSeqSeqs.append(seq)
130 seqSeqs = allSeqs[5 + (10 * i) : 15 + (10 * i)]
132 filterAlg =
Prescaler(
"filterAlg" + str(i + 10))
133 filterAlg.OutputLevel = FATAL
134 filterAlg.Cardinality = cardinality
135 filterAlg.PercentPass = filterPass
137 seq = Gaudi__Sequencer(
138 "seqSeq" + str(i + 10),
139 Members=[filterAlg] + seqSeqs,
145 allSeqSeqs.append(seq)
147 baseSeq.Members = allSeqSeqs
156 EventLoop=slimeventloopmgr,
158 MessageSvcType=
"InertMessageSvc",