ATLAS Offline Software
Loading...
Searching...
No Matches
python.MainServicesConfig Namespace Reference

Functions

 MainServicesMiniCfg (flags, loopMgr='AthenaEventLoopMgr', masterSequence='AthAlgSeq')
 AvalancheSchedulerSvcCfg (flags, **kwargs)
 OutputUsageIgnoreCfg (flags, algorithm)
 AthenaEventLoopMgrCfg (flags)
 MPIHiveEventLoopMgrCfg (flags)
 AthenaHiveEventLoopMgrCfg (flags)
 AthenaMpEventLoopMgrCfg (flags)
 AthenaMtesEventLoopMgrCfg (flags, mtEs=False, channel='')
 MessageSvcCfg (flags)
 addMainSequences (flags, cfg)
 addEvgenSequences (flags, cfg)
 MainServicesCfg (flags, LoopMgr='AthenaEventLoopMgr')
 MainEvgenServicesCfg (flags, LoopMgr="AthenaEventLoopMgr", withSequences=True)
 JobOptionsDumpCfg (flags, fileName="JobOptsConfig.txt")

Variables

 flags = initConfigFlags()
 RunNumbers
 TimeStamps
 cfg = MainEvgenServicesCfg(flags, withSequences=True)

Function Documentation

◆ addEvgenSequences()

python.MainServicesConfig.addEvgenSequences ( flags,
cfg )

Definition at line 303 of file MainServicesConfig.py.

303def addEvgenSequences(flags, cfg):
304 from GeneratorConfig.Sequences import EvgenSequence, EvgenSequenceFactory
305 cfg.addSequence(EvgenSequenceFactory(EvgenSequence.Main), parentName="AthAlgSeq")
306 cfg.addSequence(EvgenSequenceFactory(EvgenSequence.Generator), parentName=EvgenSequence.Main.value)
307 cfg.addSequence(EvgenSequenceFactory(EvgenSequence.Fix), parentName=EvgenSequence.Main.value)
308 cfg.addSequence(EvgenSequenceFactory(EvgenSequence.PreFilter), parentName=EvgenSequence.Main.value)
309 cfg.addSequence(EvgenSequenceFactory(EvgenSequence.Test), parentName=EvgenSequence.Main.value)
310 cfg.addSequence(EvgenSequenceFactory(EvgenSequence.Filter), parentName=EvgenSequence.Main.value)
311 cfg.addSequence(EvgenSequenceFactory(EvgenSequence.Post), parentName=EvgenSequence.Main.value)
312
313

◆ addMainSequences()

python.MainServicesConfig.addMainSequences ( flags,
cfg )
Add the standard sequences to cfg

Definition at line 246 of file MainServicesConfig.py.

246def addMainSequences(flags, cfg):
247 """Add the standard sequences to cfg"""
248
249 # Build standard sequences:
250 AthSequencer = CompFactory.AthSequencer
251 cfg.addSequence(AthSequencer('AthAlgEvtSeq', Sequential=True, StopOverride=True), parentName='AthMasterSeq')
252 cfg.addSequence(AthSequencer('AthOutSeq', StopOverride=True), parentName='AthMasterSeq')
253
254 cfg.addSequence(AthSequencer('AthBeginSeq', Sequential=True), parentName='AthAlgEvtSeq')
255 cfg.addSequence(AthSequencer('AthAllAlgSeq', StopOverride=True), parentName='AthAlgEvtSeq')
256
257 athAlgSeq = AthSequencer('AthAlgSeq', IgnoreFilterPassed=True, StopOverride=True, ProcessDynamicDataDependencies=True, ExtraDataForDynamicConsumers=[])
258 athCondSeq = AthSequencer('AthCondSeq',StopOverride=True)
259
260 if flags.Concurrency.NumThreads==0:
261 # For serial execution, we need the CondAlgs to execute first.
262 cfg.addSequence(athCondSeq, parentName='AthAllAlgSeq')
263 cfg.addSequence(athAlgSeq, parentName='AthAllAlgSeq')
264 else:
265 # In MT, the order of execution is irrelevant (determined by data deps).
266 # We add the conditions sequence later such that the CondInputLoader gets
267 # initialized after all other user Algorithms for MT, so the base classes
268 # of data deps can be correctly determined.
269 cfg.addSequence(athAlgSeq, parentName='AthAllAlgSeq')
270 cfg.addSequence(athCondSeq, parentName='AthAllAlgSeq')
271
272 cfg.addSequence(AthSequencer('AthEndSeq', Sequential=True), parentName='AthAlgEvtSeq')
273
274 # Set up incident firing:
275 AthIncFirerAlg = CompFactory.AthIncFirerAlg
276 IncidentProcAlg = CompFactory.IncidentProcAlg
277
278 previousPerfmonDomain = cfg.getCurrentPerfmonDomain()
279 cfg.flagPerfmonDomain('Incidents')
280
281 cfg.addEventAlgo(AthIncFirerAlg("BeginIncFiringAlg", FireSerial=False, Incidents=['BeginEvent']),
282 sequenceName='AthBeginSeq')
283
284 cfg.addEventAlgo(IncidentProcAlg('IncidentProcAlg1'),
285 sequenceName='AthBeginSeq')
286
287 cfg.addEventAlgo(AthIncFirerAlg('EndIncFiringAlg', FireSerial=False, Incidents=['EndEvent']),
288 sequenceName="AthEndSeq")
289
290 cfg.addEventAlgo(IncidentProcAlg('IncidentProcAlg2'),
291 sequenceName="AthEndSeq")
292
293 # Should be after all other algorithms:
294 cfg.addEventAlgo(AthIncFirerAlg('EndAlgorithmsFiringAlg', FireSerial=False, Incidents=['EndAlgorithms']),
295 sequenceName="AthMasterSeq")
296
297 cfg.addEventAlgo(IncidentProcAlg('IncidentProcAlg3'),
298 sequenceName="AthMasterSeq")
299
300 cfg.flagPerfmonDomain(previousPerfmonDomain)
301
302
Algorithm to fire given list of incidents on execute.
ClassName: AthSequencer.

◆ AthenaEventLoopMgrCfg()

python.MainServicesConfig.AthenaEventLoopMgrCfg ( flags)

Definition at line 68 of file MainServicesConfig.py.

68def AthenaEventLoopMgrCfg(flags):
69 cfg = ComponentAccumulator()
70 elmgr = CompFactory.AthenaEventLoopMgr(EventPrintoutInterval = flags.Exec.EventPrintoutInterval)
71 if flags.Input.OverrideRunNumber:
72 from AthenaKernel.EventIdOverrideConfig import EvtIdModifierSvcCfg
73 elmgr.EvtIdModifierSvc = cfg.getPrimaryAndMerge( EvtIdModifierSvcCfg(flags) )
74
75 if flags.Common.isOverlay:
76 if not flags.Overlay.DataOverlay:
77 elmgr.RequireInputAttributeList = True
78 elmgr.UseSecondaryEventNumber = True
79
80 cfg.addService( elmgr )
81
82 return cfg
83
84

◆ AthenaHiveEventLoopMgrCfg()

python.MainServicesConfig.AthenaHiveEventLoopMgrCfg ( flags)

Definition at line 135 of file MainServicesConfig.py.

135def AthenaHiveEventLoopMgrCfg(flags):
136 cfg = ComponentAccumulator()
137 hivesvc = CompFactory.SG.HiveMgrSvc("EventDataSvc",
138 NSlots = flags.Concurrency.NumConcurrentEvents)
139 cfg.addService( hivesvc )
140
141 arp = CompFactory.AlgResourcePool(TopAlg = ["AthMasterSeq"]) #this should enable control flow
142 cfg.addService( arp )
143
144 scheduler = cfg.getPrimaryAndMerge(AvalancheSchedulerSvcCfg(flags))
145
146 elmgr = CompFactory.AthenaHiveEventLoopMgr(
147 WhiteboardSvc = "EventDataSvc",
148 SchedulerSvc = scheduler.getName(),
149 EventPrintoutInterval = flags.Exec.EventPrintoutInterval)
150
151 if flags.Input.OverrideRunNumber:
152 from AthenaKernel.EventIdOverrideConfig import EvtIdModifierSvcCfg
153 elmgr.EvtIdModifierSvc = cfg.getPrimaryAndMerge(EvtIdModifierSvcCfg(flags))
154
155 if flags.Common.isOverlay and not flags.Overlay.DataOverlay:
156 elmgr.RequireInputAttributeList = True
157 elmgr.UseSecondaryEventNumber = True
158
159 cfg.addService( elmgr )
160
161 return cfg
162

◆ AthenaMpEventLoopMgrCfg()

python.MainServicesConfig.AthenaMpEventLoopMgrCfg ( flags)

Definition at line 163 of file MainServicesConfig.py.

163def AthenaMpEventLoopMgrCfg(flags):
164 cfg = ComponentAccumulator()
165 if flags.Common.isOverlay and not flags.Overlay.DataOverlay:
166 elmgr = CompFactory.AthenaEventLoopMgr(EventPrintoutInterval = flags.Exec.EventPrintoutInterval)
167 elmgr.RequireInputAttributeList = True
168 elmgr.UseSecondaryEventNumber = True
169 cfg.addService( elmgr )
170
171 from AthenaMP.AthenaMPConfig import AthenaMPCfg
172 mploop = AthenaMPCfg(flags)
173 cfg.merge( mploop )
174
175 return cfg
176
177

◆ AthenaMtesEventLoopMgrCfg()

python.MainServicesConfig.AthenaMtesEventLoopMgrCfg ( flags,
mtEs = False,
channel = '' )

Definition at line 178 of file MainServicesConfig.py.

178def AthenaMtesEventLoopMgrCfg(flags, mtEs=False, channel=''):
179 cfg = ComponentAccumulator()
180
181 hivesvc = CompFactory.SG.HiveMgrSvc("EventDataSvc",
182 NSlots = flags.Concurrency.NumConcurrentEvents)
183 cfg.addService( hivesvc )
184
185 arp = CompFactory.AlgResourcePool(TopAlg = ["AthMasterSeq"]) #this should enable control flow
186 cfg.addService( arp )
187
188 scheduler = cfg.getPrimaryAndMerge(AvalancheSchedulerSvcCfg(flags))
189
190 elmgr = CompFactory.AthenaMtesEventLoopMgr(
191 WhiteboardSvc = "EventDataSvc",
192 SchedulerSvc = scheduler.getName(),
193 EventRangeChannel = channel,
194 EventPrintoutInterval = flags.Exec.EventPrintoutInterval)
195
196 if flags.Input.OverrideRunNumber:
197 from AthenaKernel.EventIdOverrideConfig import EvtIdModifierSvcCfg
198 elmgr.EvtIdModifierSvc = cfg.getPrimaryAndMerge(EvtIdModifierSvcCfg(flags))
199
200 if flags.Common.isOverlay and not flags.Overlay.DataOverlay:
201 elmgr.RequireInputAttributeList = True
202 elmgr.UseSecondaryEventNumber = True
203
204 if mtEs:
205 from AthenaServices.OutputStreamSequencerSvcConfig import OutputStreamSequencerSvcCfg
206 cfg.merge(OutputStreamSequencerSvcCfg(flags,
207 incidentName="NextEventRange",
208 reportingOn = True))
209
210 cfg.addService( elmgr )
211
212 return cfg
213
214

◆ AvalancheSchedulerSvcCfg()

python.MainServicesConfig.AvalancheSchedulerSvcCfg ( flags,
** kwargs )

Definition at line 29 of file MainServicesConfig.py.

29def AvalancheSchedulerSvcCfg(flags, **kwargs):
30 kwargs.setdefault("CheckDependencies", flags.Scheduler.CheckDependencies)
31 kwargs.setdefault("CheckOutputUsage", flags.Scheduler.CheckOutputUsage)
32 kwargs.setdefault("ShowDataDependencies", flags.Scheduler.ShowDataDeps)
33 kwargs.setdefault("ShowDataFlow", flags.Scheduler.ShowDataFlow)
34 kwargs.setdefault("ShowControlFlow", flags.Scheduler.ShowControlFlow)
35 kwargs.setdefault("VerboseSubSlots", flags.Scheduler.EnableVerboseViews)
36 kwargs.setdefault("ThreadPoolSize", flags.Concurrency.NumThreads)
37 kwargs.setdefault("DataDepsGraphFile", flags.Scheduler.DataDepsGraphFile)
38 kwargs.setdefault("DataDepsGraphAlgPattern", flags.Scheduler.DataDepsGraphAlgPattern)
39 kwargs.setdefault("DataDepsGraphObjectPattern", flags.Scheduler.DataDepsGraphObjectPattern)
40 kwargs.setdefault("NumOffloadThreads", flags.Concurrency.NumOffloadThreads)
41
42 cfg = ComponentAccumulator()
43 scheduler = CompFactory.AvalancheSchedulerSvc(**kwargs)
44 cfg.addService(scheduler, primary=True)
45
46 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
47 # FailIfNoProxy=False makes it a warning, not an error, if unmet data
48 # dependencies are not found in the store. It should probably be changed
49 # to True eventually.
50 inputloader_ca = SGInputLoaderCfg(flags, FailIfNoProxy=flags.Input.FailOnUnknownCollections)
51 cfg.merge(inputloader_ca, sequenceName="AthAlgSeq")
52
53 # Specifying DataLoaderAlg makes the Scheduler automatically assign
54 # all unmet data dependencies to that algorithm.
55 if flags.Scheduler.AutoLoadUnmetDependencies:
56 scheduler.DataLoaderAlg = inputloader_ca.getPrimary().getName()
57
58 return cfg
59
60

◆ JobOptionsDumpCfg()

python.MainServicesConfig.JobOptionsDumpCfg ( flags,
fileName = "JobOptsConfig.txt" )
Job options service configuration - mainly to dump the config.

Definition at line 438 of file MainServicesConfig.py.

438def JobOptionsDumpCfg(flags, fileName="JobOptsConfig.txt"):
439 """Job options service configuration - mainly to dump the config."""
440 acc = ComponentAccumulator()
441 acc.addService(CompFactory.JobOptionsSvc(DUMPFILE=fileName))
442 return acc
443
444

◆ MainEvgenServicesCfg()

python.MainServicesConfig.MainEvgenServicesCfg ( flags,
LoopMgr = "AthenaEventLoopMgr",
withSequences = True )
ComponentAccumulator-based equivalent of:
import AthenaCommon.AtlasUnixGeneratorJob

NB Must have set flags.Input.RunNumbers and
flags.Input.TimeStamps before calling to avoid
attempted auto-configuration from an input file.

Definition at line 419 of file MainServicesConfig.py.

419def MainEvgenServicesCfg(flags, LoopMgr="AthenaEventLoopMgr", withSequences=True):
420 """ComponentAccumulator-based equivalent of:
421 import AthenaCommon.AtlasUnixGeneratorJob
422
423 NB Must have set flags.Input.RunNumbers and
424 flags.Input.TimeStamps before calling to avoid
425 attempted auto-configuration from an input file.
426 """
427 cfg = MainServicesCfg(flags, LoopMgr)
428 if not flags.Input.Files:
429 from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
430 cfg.merge(McEventSelectorCfg(flags))
431
432 if withSequences:
433 addEvgenSequences(flags, cfg)
434
435 return cfg
436
437

◆ MainServicesCfg()

python.MainServicesConfig.MainServicesCfg ( flags,
LoopMgr = 'AthenaEventLoopMgr' )

Definition at line 314 of file MainServicesConfig.py.

314def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr'):
315 # Set the Python OutputLevel on the root logger
316 from AthenaCommon.Logging import log
317 log.setLevel(flags.Exec.OutputLevel)
318
319 if flags.Exec.Interactive == "run":
320 LoopMgr="PyAthenaEventLoopMgr"
321 log.info("Interactive mode, switching to %s", LoopMgr)
322 else:
323 # Run a serial job for threads=0
324 if flags.Concurrency.NumThreads > 0:
325 if flags.Concurrency.NumConcurrentEvents==0:
326 raise Exception("Requested Concurrency.NumThreads>0 and Concurrency.NumConcurrentEvents==0, "
327 "which will not process events!")
328 if flags.Exec.MTEventService:
329 LoopMgr = "AthenaMtesEventLoopMgr"
330 elif flags.Exec.MPI:
331 LoopMgr = "MPIHiveEventLoopMgr"
332 else:
333 LoopMgr = "AthenaHiveEventLoopMgr"
334
335 if flags.Concurrency.NumProcs > 0:
336 LoopMgr = "AthMpEvtLoopMgr"
337
338 # Core components needed for serial and threaded jobs:
339 cfg = MainServicesMiniCfg(flags, loopMgr=LoopMgr, masterSequence='AthMasterSeq')
340
341 # Main sequences and incident handling:
342 addMainSequences(flags, cfg)
343
344 # Basic services:
345 cfg.addService(CompFactory.ClassIDSvc(CLIDDBFiles = ['clid.db','Gaudi_clid.db']))
346
347 cfg.addService(CompFactory.AlgContextSvc(BypassIncidents=True))
348 cfg.addAuditor(CompFactory.AlgContextAuditor())
349
350 cfg.addService(CompFactory.StoreGateSvc(Dump=flags.Debug.DumpEvtStore))
351 cfg.addService(CompFactory.StoreGateSvc("DetectorStore",Dump=flags.Debug.DumpDetStore))
352 cfg.addService(CompFactory.StoreGateSvc("HistoryStore"))
353 cfg.addService(CompFactory.StoreGateSvc("ConditionStore",Dump=flags.Debug.DumpCondStore))
354
355 cfg.merge(MessageSvcCfg(flags))
356
357 from AthenaConfiguration.FPEAndCoreDumpConfig import FPEAndCoreDumpCfg
358 cfg.merge(FPEAndCoreDumpCfg(flags))
359
360 # Avoid stack traces to the exception handler. These traces
361 # aren't very useful since they just point to the handler, not
362 # the original bug.
363 cfg.addService(CompFactory.ExceptionSvc(Catch="NONE"))
364
365 # ApplicationMgr properties:
366 cfg.setAppProperty('AuditAlgorithms', True)
367 cfg.setAppProperty('InitializationLoopCheck', False)
368 cfg.setAppProperty('EvtMax', flags.Exec.MaxEvents)
369 if flags.Exec.OutputLevel > INFO:
370 # this turns off the appMgr spalsh
371 cfg.setAppProperty('AppName', '')
372 cfg.setAppProperty('OutputLevel', flags.Exec.OutputLevel)
373
374 if flags.Exec.DebugStage != "":
375 cfg.setDebugStage(flags.Exec.DebugStage)
376
377 cfg.interactive=flags.Exec.Interactive
378
379 if flags.Concurrency.NumProcs > 0:
380 cfg.merge(AthenaMpEventLoopMgrCfg(flags))
381
382 # Timeout
383 if flags.Exec.EventTimeOut > 0:
384 timeoutAlg = CompFactory.TimeoutAlg(
385 Timeout = flags.Exec.EventTimeOut,
386 AbortJob = True,
387 DumpSchedulerState = False)
388 cfg.addEventAlgo(timeoutAlg, sequenceName='AthBeginSeq')
389
390 # Additional components needed for threaded jobs only:
391 if flags.Concurrency.NumThreads > 0:
392 if flags.Exec.MTEventService:
393 cfg.merge(AthenaMtesEventLoopMgrCfg(flags,True,flags.Exec.MTEventServiceChannel))
394 elif flags.Exec.MPI:
395 cfg.merge(MPIHiveEventLoopMgrCfg(flags))
396 else:
397 cfg.merge(AthenaHiveEventLoopMgrCfg(flags))
398 # Setup SGCommitAuditor to sweep new DataObjects at end of Alg execute
399 cfg.addAuditor( CompFactory.SGCommitAuditor() )
400 elif LoopMgr == 'AthenaEventLoopMgr':
401 cfg.merge(AthenaEventLoopMgrCfg(flags))
402
403 # Performance monitoring and profiling:
404 if flags.PerfMon.doFastMonMT or flags.PerfMon.doFullMonMT:
405 from PerfMonComps.PerfMonCompsConfig import PerfMonMTSvcCfg
406 cfg.merge(PerfMonMTSvcCfg(flags))
407
408 if flags.PerfMon.doGPerfProf:
409 from PerfMonGPerfTools.GPT_ProfilerServiceConfig import GPT_ProfilerServiceCfg
410 cfg.merge(GPT_ProfilerServiceCfg(flags))
411
412 if len(flags.PerfMon.Valgrind.ProfiledAlgs)>0:
413 from Valkyrie.ValkyrieConfig import ValgrindServiceCfg
414 cfg.merge(ValgrindServiceCfg(flags))
415
416 return cfg
417
418

◆ MainServicesMiniCfg()

python.MainServicesConfig.MainServicesMiniCfg ( flags,
loopMgr = 'AthenaEventLoopMgr',
masterSequence = 'AthAlgSeq' )
Mininmal basic config, just good enough for HelloWorld and alike

Definition at line 7 of file MainServicesConfig.py.

7def MainServicesMiniCfg(flags, loopMgr='AthenaEventLoopMgr', masterSequence='AthAlgSeq'):
8 """Mininmal basic config, just good enough for HelloWorld and alike"""
9 cfg = ComponentAccumulator(CompFactory.AthSequencer(masterSequence, Sequential=True))
10 cfg.setAsTopLevel()
11 cfg.setAppProperty('TopAlg',['AthSequencer/'+masterSequence])
12 cfg.setAppProperty('MessageSvcType', 'MessageSvc')
13 cfg.setAppProperty('EventLoop', loopMgr)
14 cfg.setAppProperty('ExtSvcCreates', 'False')
15 cfg.setAppProperty('JobOptionsSvcType', 'JobOptionsSvc')
16 cfg.setAppProperty('JobOptionsType', 'NONE')
17 cfg.setAppProperty('JobOptionsPostAction', '')
18 cfg.setAppProperty('JobOptionsPreAction', '')
19 cfg.setAppProperty('PrintAlgsSequence', flags.Exec.PrintAlgsSequence)
20 if flags.Debug.NameAuditor:
21 cfg.addAuditor(CompFactory.NameAuditor())
22 if flags.Exec.StopOnSignal:
23 cfg.setAppProperty("StopOnSignal", True)
24 cfg.addService(CompFactory.Gaudi.Utils.StopSignalHandler(Signals=flags.Exec.StopOnSignal))
25
26 return cfg
27
28

◆ MessageSvcCfg()

python.MainServicesConfig.MessageSvcCfg ( flags)

Definition at line 215 of file MainServicesConfig.py.

215def MessageSvcCfg(flags):
216 cfg = ComponentAccumulator()
217 msgsvc = CompFactory.MessageSvc()
218 msgsvc.OutputLevel = flags.Exec.OutputLevel
219 msgsvc.Format = "% F%{:d}W%C%7W%R%T %0W%M".format(flags.Common.MsgSourceLength)
220 msgsvc.enableSuppression = flags.Common.MsgSuppression
221 if flags.Common.ShowMsgStats:
222 msgsvc.showStats = True
223 from AthenaCommon.Constants import WARNING
224 msgsvc.statLevel = WARNING
225
226 from AthenaConfiguration.Enums import ProductionStep
227 if flags.Common.ProductionStep not in [ProductionStep.Default, ProductionStep.Reconstruction, ProductionStep.Derivation]:
228 msgsvc.Format = "% F%18W%S%7W%R%T %0W%M" # Temporary to match legacy configuration for serial simulation/digitization/overlay jobs
229 if flags.Concurrency.NumThreads>0:
230 msgsvc.Format = "% F%{:d}W%C%6W%R%e%s%8W%R%T %0W%M".format(flags.Common.MsgSourceLength)
231 if flags.Exec.VerboseMessageComponents:
232 msgsvc.verboseLimit=0
233 if flags.Exec.DebugMessageComponents:
234 msgsvc.debugLimit=0
235 if flags.Exec.InfoMessageComponents:
236 msgsvc.infoLimit=0
237 if flags.Exec.WarningMessageComponents:
238 msgsvc.warningLimit=0
239 if flags.Exec.ErrorMessageComponents:
240 msgsvc.errorLimit=0
241
242 cfg.addService(msgsvc)
243 return cfg
244
245

◆ MPIHiveEventLoopMgrCfg()

python.MainServicesConfig.MPIHiveEventLoopMgrCfg ( flags)
Sets up an MPIHive EventLoopMgr along with it's dependencies

Definition at line 85 of file MainServicesConfig.py.

85def MPIHiveEventLoopMgrCfg(flags):
86 """Sets up an MPIHive EventLoopMgr along with it's dependencies"""
87 from SQLiteDBSvc.SQLiteDBSvcConfig import SQLiteDBSvcCfg
88 cfg = ComponentAccumulator()
89 nConcurrentEvents = flags.Concurrency.NumConcurrentEvents
90 nThreads = flags.Concurrency.NumThreads
91
92 hivesvc = CompFactory.SG.HiveMgrSvc("EventDataSvc", NSlots=nConcurrentEvents)
93 cfg.addService(hivesvc)
94
95 arp = CompFactory.AlgResourcePool(
96 TopAlg=["AthMasterSeq"]
97 ) # this should enable control flow
98 cfg.addService(arp)
99
100 scheduler = cfg.getPrimaryAndMerge(
101 AvalancheSchedulerSvcCfg(flags, ThreadPoolSize=nThreads)
102 )
103
104 cfg.merge(SQLiteDBSvcCfg(flags, name="LogDBSvc", dbPath="mpilog.db"))
105 cfg.addService(CompFactory.MPIClusterSvc("MPIClusterSvc", LogDatabaseSvc="SQLiteDBSvc/LogDBSvc"))
106 elmgr = CompFactory.MPIHiveEventLoopMgr(
107 MPIClusterSvc="MPIClusterSvc",
108 WhiteboardSvc="EventDataSvc",
109 SchedulerSvc=scheduler.getName(),
110 FirstEventIndex=flags.Exec.SkipEvents,
111 )
112
113 from AthenaServices.OutputStreamSequencerSvcConfig import (
114 OutputStreamSequencerSvcCfg,
115 )
116
117 cfg.merge(
118 OutputStreamSequencerSvcCfg(
119 flags, incidentName="BeginInputFile", reportingOn=False, replaceRangeMode=True
120 )
121 )
122 if flags.Input.OverrideRunNumber:
123 from AthenaKernel.EventIdOverrideConfig import EvtIdModifierSvcCfg
124
125 elmgr.EvtIdModifierSvc = cfg.getPrimaryAndMerge(EvtIdModifierSvcCfg(flags)).name
126
127 if flags.Common.isOverlay and not flags.Overlay.DataOverlay:
128 elmgr.RequireInputAttributeList = True
129 elmgr.UseSecondaryEventNumber = True
130
131 cfg.addService(elmgr)
132
133 return cfg
134

◆ OutputUsageIgnoreCfg()

python.MainServicesConfig.OutputUsageIgnoreCfg ( flags,
algorithm )

Definition at line 61 of file MainServicesConfig.py.

61def OutputUsageIgnoreCfg(flags, algorithm):
62 cfg = ComponentAccumulator()
63 if flags.Concurrency.NumThreads > 0 and flags.Scheduler.CheckOutputUsage:
64 cfg.merge(AvalancheSchedulerSvcCfg(flags, CheckOutputUsageIgnoreList=[algorithm]))
65 return cfg
66
67

Variable Documentation

◆ cfg

python.MainServicesConfig.cfg = MainEvgenServicesCfg(flags, withSequences=True)

Definition at line 451 of file MainServicesConfig.py.

◆ flags

python.MainServicesConfig.flags = initConfigFlags()

Definition at line 447 of file MainServicesConfig.py.

◆ RunNumbers

python.MainServicesConfig.RunNumbers

Definition at line 449 of file MainServicesConfig.py.

◆ TimeStamps

python.MainServicesConfig.TimeStamps

Definition at line 450 of file MainServicesConfig.py.