ATLAS Offline Software
AtlasThreadedJob.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
2 
3 
7 
9  from AthenaCommon.AppMgr import theApp
10  from AthenaCommon.AppMgr import ServiceMgr as svcMgr
11  from AthenaCommon import Constants
12 
13  from AthenaCommon.ConcurrencyFlags import jobproperties as jps
14 
15  if (jps.ConcurrencyFlags.NumProcs() == 0) :
16  theApp.MessageSvcType = "InertMessageSvc"
17  else:
18  # InertMessageSvc doesn't play nice with MP
19  theApp.MessageSvcType = "MessageSvc"
20 
21  svcMgr.MessageSvc.Format = "% F%50W%C%6W%R%e%s%8W%R%T %0W%M"
22 
23  numStores = jps.ConcurrencyFlags.NumConcurrentEvents()
24 
25  from StoreGate.StoreGateConf import SG__HiveMgrSvc
26  svcMgr += SG__HiveMgrSvc("EventDataSvc")
27  svcMgr.EventDataSvc.NSlots = numStores
28 
29 
30  from GaudiHive.GaudiHiveConf import AlgResourcePool
31  arp=AlgResourcePool( OutputLevel = Constants.INFO )
32  arp.TopAlg=["AthMasterSeq"] #this should enable control flow
33  svcMgr += arp
34 
35  from AthenaCommon.AlgScheduler import AlgScheduler
36  AlgScheduler.ShowDataDependencies(False)
37  AlgScheduler.ShowControlFlow(False)
38 
39  from AthenaCommon.AlgSequence import AlgSequence
40  topSequence = AlgSequence()
41  from SGComps.SGCompsConf import SGInputLoader
42  # FailIfNoProxy=False makes it a warning, not an error, if unmet data
43  # dependencies are not found in the store. It should probably be changed
44  # to True eventually.
45  topSequence += SGInputLoader (FailIfNoProxy = False)
46  AlgScheduler.setDataLoaderAlg ('SGInputLoader' )
47 
48  if (theApp._opts.mtes or jps.ConcurrencyFlags.NumProcs()>0):
49  # Either multi-threaded Event Service or hybrid MP+MT
50  from AthenaServices.AthenaServicesConf import AthenaMtesEventLoopMgr
51 
52  svcMgr += AthenaMtesEventLoopMgr()
53  svcMgr.AthenaMtesEventLoopMgr.WhiteboardSvc = "EventDataSvc"
54  svcMgr.AthenaMtesEventLoopMgr.SchedulerSvc = AlgScheduler.getScheduler().getName()
55 
56  if theApp._opts.mtes:
57  svcMgr.AthenaMtesEventLoopMgr.EventRangeChannel = theApp._opts.mtes_channel
58  theApp.EventLoop = "AthenaMtesEventLoopMgr"
59  else:
60  from AthenaServices.AthenaServicesConf import AthenaHiveEventLoopMgr
61 
62  svcMgr += AthenaHiveEventLoopMgr()
63  svcMgr.AthenaHiveEventLoopMgr.WhiteboardSvc = "EventDataSvc"
64  svcMgr.AthenaHiveEventLoopMgr.SchedulerSvc = AlgScheduler.getScheduler().getName()
65 
66  theApp.EventLoop = "AthenaHiveEventLoopMgr"
67 
68  #
69 
71 
72  theAuditorSvc = svcMgr.AuditorSvc
73  theApp.AuditAlgorithms=True
74  from SGComps.SGCompsConf import SGCommitAuditor
75  theAuditorSvc += SGCommitAuditor()
76 
77 
78 
80 
81 
82 del _setupAtlasThreadedJob
AthenaMtesEventLoopMgr
Definition: AthenaMtesEventLoopMgr.h:57
python.AlgSequence.AlgSequence
AlgSequence
Definition: PhysicsAnalysis/D3PDTools/AnaAlgorithm/python/AlgSequence.py:7
AthenaHiveEventLoopMgr
The default ATLAS batch event loop manager.
Definition: AthenaHiveEventLoopMgr.h:75
SGCommitAuditor
Definition: SGCommitAuditor.h:25
python.AtlasThreadedJob._setupAtlasThreadedJob
def _setupAtlasThreadedJob()
Definition: AtlasThreadedJob.py:8