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 308 of file MainServicesConfig.py.

308def addEvgenSequences(flags, cfg):
309 from GeneratorConfig.Sequences import EvgenSequence, EvgenSequenceFactory
310 cfg.addSequence(EvgenSequenceFactory(EvgenSequence.Main), parentName="AthAlgSeq")
311 cfg.addSequence(EvgenSequenceFactory(EvgenSequence.Generator), parentName=EvgenSequence.Main.value)
312 cfg.addSequence(EvgenSequenceFactory(EvgenSequence.Fix), parentName=EvgenSequence.Main.value)
313 cfg.addSequence(EvgenSequenceFactory(EvgenSequence.PreFilter), parentName=EvgenSequence.Main.value)
314 cfg.addSequence(EvgenSequenceFactory(EvgenSequence.Test), parentName=EvgenSequence.Main.value)
315 cfg.addSequence(EvgenSequenceFactory(EvgenSequence.Filter), parentName=EvgenSequence.Main.value)
316 cfg.addSequence(EvgenSequenceFactory(EvgenSequence.Post), parentName=EvgenSequence.Main.value)
317
318

◆ addMainSequences()

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

Definition at line 251 of file MainServicesConfig.py.

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

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

◆ AthenaMpEventLoopMgrCfg()

python.MainServicesConfig.AthenaMpEventLoopMgrCfg ( flags)

Definition at line 168 of file MainServicesConfig.py.

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

◆ AthenaMtesEventLoopMgrCfg()

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

Definition at line 183 of file MainServicesConfig.py.

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

◆ 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 462 of file MainServicesConfig.py.

462def JobOptionsDumpCfg(flags, fileName="JobOptsConfig.txt"):
463 """Job options service configuration - mainly to dump the config."""
464 acc = ComponentAccumulator()
465 acc.addService(CompFactory.JobOptionsSvc(DUMPFILE=fileName))
466 return acc
467
468

◆ 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 443 of file MainServicesConfig.py.

443def MainEvgenServicesCfg(flags, LoopMgr="AthenaEventLoopMgr", withSequences=True):
444 """ComponentAccumulator-based equivalent of:
445 import AthenaCommon.AtlasUnixGeneratorJob
446
447 NB Must have set flags.Input.RunNumbers and
448 flags.Input.TimeStamps before calling to avoid
449 attempted auto-configuration from an input file.
450 """
451 cfg = MainServicesCfg(flags, LoopMgr)
452 if not flags.Input.Files:
453 from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
454 cfg.merge(McEventSelectorCfg(flags))
455
456 if withSequences:
457 addEvgenSequences(flags, cfg)
458
459 return cfg
460
461

◆ MainServicesCfg()

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

Definition at line 319 of file MainServicesConfig.py.

319def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr'):
320 # Set the Python OutputLevel on the root logger
321 from AthenaCommon.Logging import log
322 log.setLevel(flags.Exec.OutputLevel)
323
324 if flags.Exec.Interactive == "run":
325 LoopMgr="PyAthenaEventLoopMgr"
326 log.info("Interactive mode, switching to %s", LoopMgr)
327 else:
328 # Guard incorrect MPI configurations
329 if flags.Exec.MPI:
330 # start msg here but don't use it if config is OK
331 msg = "ERRONEOUS CONFIGURATION FOR MPI:\n"
332 OK = True
333 if flags.Concurrency.NumThreads < 1:
334 msg = f"{msg} - Concurrency.NumThreads = {flags.Concurrency.NumThreads}, must be >= 1\n"
335 OK = False
336 if flags.Concurrency.NumProcs > 0:
337 msg = f"{msg} - Concurrency.NumProcs = {flags.Concurrency.NumProcs}, must be 0\n"
338 OK = False
339 if not OK:
340 raise Exception(msg)
341 # Run a serial job for threads=0
342 if flags.Concurrency.NumThreads > 0:
343 if flags.Concurrency.NumConcurrentEvents==0:
344 raise Exception("Requested Concurrency.NumThreads>0 and Concurrency.NumConcurrentEvents==0, "
345 "which will not process events!")
346 if flags.Exec.MTEventService:
347 LoopMgr = "AthenaMtesEventLoopMgr"
348 elif flags.Exec.MPI:
349 LoopMgr = "MPIHiveEventLoopMgr"
350 else:
351 LoopMgr = "AthenaHiveEventLoopMgr"
352
353 if flags.Concurrency.NumProcs > 0:
354 LoopMgr = "AthMpEvtLoopMgr"
355
356 # Core components needed for serial and threaded jobs:
357 cfg = MainServicesMiniCfg(flags, loopMgr=LoopMgr, masterSequence='AthMasterSeq')
358
359 # Main sequences and incident handling:
360 addMainSequences(flags, cfg)
361
362 # Basic services:
363 cfg.addService(CompFactory.ClassIDSvc(CLIDDBFiles = ['clid.db','Gaudi_clid.db']))
364
365 cfg.addService(CompFactory.AlgContextSvc(BypassIncidents=True))
366 cfg.addAuditor(CompFactory.AlgContextAuditor())
367
368 cfg.addService(CompFactory.StoreGateSvc(Dump=flags.Debug.DumpEvtStore))
369 cfg.addService(CompFactory.StoreGateSvc("DetectorStore",Dump=flags.Debug.DumpDetStore))
370 cfg.addService(CompFactory.StoreGateSvc("HistoryStore"))
371 cfg.addService(CompFactory.StoreGateSvc("ConditionStore",Dump=flags.Debug.DumpCondStore))
372
373 cfg.merge(MessageSvcCfg(flags))
374
375 from AthenaConfiguration.FPEAndCoreDumpConfig import FPEAndCoreDumpCfg
376 cfg.merge(FPEAndCoreDumpCfg(flags))
377
378 # Avoid stack traces to the exception handler. These traces
379 # aren't very useful since they just point to the handler, not
380 # the original bug.
381 cfg.addService(CompFactory.ExceptionSvc(Catch="NONE"))
382
383 # Miscellaneous environment settings.
384 # This includes fixing the cache sizes that Eigen assumes, so that
385 # operations on large matrices will give identical results across
386 # hardware with differing cache sizes.
387 cfg.addService(CompFactory.AthEnvironmentSvc(), create=True)
388
389 # ApplicationMgr properties:
390 cfg.setAppProperty('AuditAlgorithms', True)
391 cfg.setAppProperty('InitializationLoopCheck', False)
392 cfg.setAppProperty('EvtMax', flags.Exec.MaxEvents)
393 if flags.Exec.OutputLevel > INFO:
394 # this turns off the appMgr spalsh
395 cfg.setAppProperty('AppName', '')
396 cfg.setAppProperty('OutputLevel', flags.Exec.OutputLevel)
397
398 if flags.Exec.DebugStage != "":
399 cfg.setDebugStage(flags.Exec.DebugStage)
400
401 cfg.interactive=flags.Exec.Interactive
402
403 if flags.Concurrency.NumProcs > 0:
404 cfg.merge(AthenaMpEventLoopMgrCfg(flags))
405
406 # Timeout
407 if flags.Exec.EventTimeOut > 0:
408 timeoutAlg = CompFactory.TimeoutAlg(
409 Timeout = flags.Exec.EventTimeOut,
410 AbortJob = True,
411 DumpSchedulerState = False)
412 cfg.addEventAlgo(timeoutAlg, sequenceName='AthBeginSeq')
413
414 # Additional components needed for threaded jobs only:
415 if flags.Concurrency.NumThreads > 0:
416 if flags.Exec.MTEventService:
417 cfg.merge(AthenaMtesEventLoopMgrCfg(flags,True,flags.Exec.MTEventServiceChannel))
418 elif flags.Exec.MPI:
419 cfg.merge(MPIHiveEventLoopMgrCfg(flags))
420 else:
421 cfg.merge(AthenaHiveEventLoopMgrCfg(flags))
422 # Setup SGCommitAuditor to sweep new DataObjects at end of Alg execute
423 cfg.addAuditor( CompFactory.SGCommitAuditor() )
424 elif LoopMgr == 'AthenaEventLoopMgr':
425 cfg.merge(AthenaEventLoopMgrCfg(flags))
426
427 # Performance monitoring and profiling:
428 if flags.PerfMon.doFastMonMT or flags.PerfMon.doFullMonMT:
429 from PerfMonComps.PerfMonCompsConfig import PerfMonMTSvcCfg
430 cfg.merge(PerfMonMTSvcCfg(flags))
431
432 if flags.PerfMon.doGPerfProf:
433 from PerfMonGPerfTools.GPT_ProfilerServiceConfig import GPT_ProfilerServiceCfg
434 cfg.merge(GPT_ProfilerServiceCfg(flags))
435
436 if len(flags.PerfMon.Valgrind.ProfiledAlgs)>0:
437 from Valkyrie.ValkyrieConfig import ValgrindServiceCfg
438 cfg.merge(ValgrindServiceCfg(flags))
439
440 return cfg
441
442

◆ 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 220 of file MainServicesConfig.py.

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

◆ 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 # Log DBs are rank-exclusive so no locking is needed
105 cfg.merge(
106 SQLiteDBSvcCfg(
107 flags, name="LogDBSvc", dbPath="file:mpilog.db?nolock=1"
108 )
109 )
110 cfg.addService(CompFactory.MPIClusterSvc("MPIClusterSvc", LogDatabaseSvc="SQLiteDBSvc/LogDBSvc"))
111 elmgr = CompFactory.MPIHiveEventLoopMgr(
112 MPIClusterSvc="MPIClusterSvc",
113 WhiteboardSvc="EventDataSvc",
114 SchedulerSvc=scheduler.getName(),
115 FirstEventIndex=flags.Exec.SkipEvents,
116 )
117
118 from AthenaServices.OutputStreamSequencerSvcConfig import (
119 OutputStreamSequencerSvcCfg,
120 )
121
122 cfg.merge(
123 OutputStreamSequencerSvcCfg(
124 flags, incidentName="BeginInputFile", reportingOn=False, replaceRangeMode=True
125 )
126 )
127 if flags.Input.OverrideRunNumber:
128 from AthenaKernel.EventIdOverrideConfig import EvtIdModifierSvcCfg
129
130 elmgr.EvtIdModifierSvc = cfg.getPrimaryAndMerge(EvtIdModifierSvcCfg(flags)).name
131
132 if flags.Common.isOverlay and not flags.Overlay.DataOverlay:
133 elmgr.RequireInputAttributeList = True
134 elmgr.UseSecondaryEventNumber = True
135
136 cfg.addService(elmgr)
137
138 return cfg
139

◆ 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 475 of file MainServicesConfig.py.

◆ flags

python.MainServicesConfig.flags = initConfigFlags()

Definition at line 471 of file MainServicesConfig.py.

◆ RunNumbers

python.MainServicesConfig.RunNumbers

Definition at line 473 of file MainServicesConfig.py.

◆ TimeStamps

python.MainServicesConfig.TimeStamps

Definition at line 474 of file MainServicesConfig.py.