The Gaudi Framework
master (1a7a3838)
Toggle main menu visibility
Loading...
Searching...
No Matches
CFinViewTest.py
Go to the documentation of this file.
1
#!/usr/bin/env gaudirun.py
2
12
"""
13
A test for control flow scheduling within sub-event contexts.
14
The sub-event control flow node has a child node attached.
15
16
The ViewTester is an algorithm specifically designed to create sub-event
17
contexts, pass them to the scheduler, and report on the current context.
18
19
Six instances of ViewTester are used as follows:
20
- Algorithm A1 creates two sub-event contexts
21
- Algorithms A2 and A3 run within the sub-event contexts
22
- Algorithms B1 and B2 run within the sub-event contexts,
23
on a child control flow node
24
- Algorithm A4 runs in the whole event context, after the sub-events
25
26
"""
27
28
from
Configurables
import
(
29
AlgResourcePool,
30
AvalancheSchedulerSvc,
31
Gaudi__Sequencer,
32
HiveSlimEventLoopMgr,
33
HiveWhiteBoard,
34
Test__ViewTester,
35
)
36
from
Gaudi.Configuration
import
*
37
38
# metaconfig -------------------------------------------------------------------
39
# It's confortable to collect the relevant parameters at the top of the optionfile
40
evtslots = 1
41
evtMax = 10
42
cardinality = 1
43
threads = 1
44
viewsPerEvt = 2
45
# -------------------------------------------------------------------------------
46
47
# The configuration of the whiteboard ------------------------------------------
48
# It is useful to call it EventDataSvc to replace the usual data service with
49
# the whiteboard transparently.
50
51
whiteboard =
HiveWhiteBoard
(
"EventDataSvc"
, EventSlots=evtslots)
52
53
# -------------------------------------------------------------------------------
54
55
# Event Loop Manager -----------------------------------------------------------
56
# It's called slim since it has less functionalities overall than the good-old
57
# event loop manager. Here we just set its outputlevel to DEBUG.
58
59
slimeventloopmgr =
HiveSlimEventLoopMgr
(
60
SchedulerName=
"AvalancheSchedulerSvc"
, OutputLevel=DEBUG
61
)
62
63
# -------------------------------------------------------------------------------
64
65
# ForwardScheduler -------------------------------------------------------------
66
# We just decide how many algorithms in flight we want to have and how many
67
# threads in the pool. The default value is -1, which is for TBB equivalent
68
# to take over the whole machine.
69
70
scheduler =
AvalancheSchedulerSvc
(ThreadPoolSize=threads, OutputLevel=INFO)
71
72
# -------------------------------------------------------------------------------
73
74
# Algo Resource Pool -----------------------------------------------------------
75
# Nothing special here, we just set the debug level.
76
AlgResourcePool
(OutputLevel=DEBUG)
77
78
# -------------------------------------------------------------------------------
79
80
# Set up of the crunchers, daily business --------------------------------------
81
82
a1 = Test__ViewTester(
"A1"
)
83
a1.baseViewName =
"view"
84
a1.viewNumber = viewsPerEvt
85
a1.viewNodeName =
"viewNode"
86
87
a2 = Test__ViewTester(
"A2"
)
88
a2.viewNodeName =
""
89
90
a3 = Test__ViewTester(
"A3"
)
91
a3.viewNodeName =
""
92
93
a4 = Test__ViewTester(
"A4"
)
94
a4.viewNodeName =
""
95
96
b1 = Test__ViewTester(
"B1"
)
97
b1.viewNodeName =
""
98
99
b2 = Test__ViewTester(
"B2"
)
100
b2.viewNodeName =
""
101
102
for
algo
in
[a1, a2, a3, a4, b1, b2]:
103
algo.Cardinality = cardinality
104
algo.OutputLevel = DEBUG
105
106
nodeInView = Gaudi__Sequencer(
107
"nodeInView"
, Members=[b1, b2], Sequential=
False
, OutputLevel=VERBOSE
108
)
109
110
viewNode = Gaudi__Sequencer(
111
"viewNode"
, Members=[a2, nodeInView, a3], Sequential=
False
, OutputLevel=VERBOSE
112
)
113
114
createViewSeq = Gaudi__Sequencer(
115
"createViewSeq"
, Members=[a1, viewNode, a4], Sequential=
True
, OutputLevel=VERBOSE
116
)
117
118
# Application Manager ----------------------------------------------------------
119
# We put everything together and change the type of message service
120
121
ApplicationMgr
(
122
EvtMax=evtMax,
123
EvtSel=
"NONE"
,
124
ExtSvc=[whiteboard],
125
EventLoop=slimeventloopmgr,
126
TopAlg=[createViewSeq],
127
MessageSvcType=
"InertMessageSvc"
,
128
)
129
130
# -------------------------------------------------------------------------------
AlgResourcePool
The AlgResourcePool is a concrete implementation of the IAlgResourcePool interface.
Definition
AlgResourcePool.h:35
ApplicationMgr
The Application Manager class.
Definition
ApplicationMgr.h:54
AvalancheSchedulerSvc
Definition
AvalancheSchedulerSvc.h:114
HiveSlimEventLoopMgr
Definition
HiveSlimEventLoopMgr.h:31
HiveWhiteBoard
Data service base class.
Definition
HiveWhiteBoard.cpp:129
Gaudi.Configuration
Definition
Configuration.py:1
GaudiHive
options
CFinViewTest.py
Generated on
for The Gaudi Framework by
1.17.0