|
| ~ForwardSchedulerSvc () override=default |
| Destructor. More...
|
|
StatusCode | initialize () override |
| Initialise. More...
|
|
StatusCode | finalize () override |
| Finalise. More...
|
|
StatusCode | pushNewEvent (EventContext *eventContext) override |
| Make an event available to the scheduler. More...
|
|
StatusCode | pushNewEvents (std::vector< EventContext * > &eventContexts) override |
|
StatusCode | popFinishedEvent (EventContext *&eventContext) override |
| Blocks until an event is availble. More...
|
|
StatusCode | tryPopFinishedEvent (EventContext *&eventContext) override |
| Try to fetch an event from the scheduler. More...
|
|
unsigned int | freeSlots () override |
| Get free slots number. More...
|
|
void | addAlg (Algorithm *, EventContext *, pthread_t) |
|
bool | delAlg (Algorithm *) |
|
void | dumpState () override |
|
void * | i_cast (const InterfaceID &tid) const override |
| Implementation of IInterface::i_cast. More...
|
|
StatusCode | queryInterface (const InterfaceID &ti, void **pp) override |
| Implementation of IInterface::queryInterface. More...
|
|
std::vector< std::string > | getInterfaceNames () const override |
| Implementation of IInterface::getInterfaceNames. More...
|
|
| ~extends () override=default |
| Virtual destructor. More...
|
|
const std::string & | name () const override |
| Retrieve name of the service. More...
|
|
StatusCode | configure () override |
|
StatusCode | initialize () override |
|
StatusCode | start () override |
|
StatusCode | stop () override |
|
StatusCode | finalize () override |
|
StatusCode | terminate () override |
|
Gaudi::StateMachine::State | FSMState () const override |
|
Gaudi::StateMachine::State | targetFSMState () const override |
|
StatusCode | reinitialize () override |
|
StatusCode | restart () override |
|
StatusCode | sysInitialize () override |
| Initialize Service. More...
|
|
StatusCode | sysStart () override |
| Initialize Service. More...
|
|
StatusCode | sysStop () override |
| Initialize Service. More...
|
|
StatusCode | sysFinalize () override |
| Finalize Service. More...
|
|
StatusCode | sysReinitialize () override |
| Re-initialize the Service. More...
|
|
StatusCode | sysRestart () override |
| Re-initialize the Service. More...
|
|
| Service (std::string name, ISvcLocator *svcloc) |
| Standard Constructor. More...
|
|
SmartIF< ISvcLocator > & | serviceLocator () const override |
| Retrieve pointer to service locator. More...
|
|
StatusCode | setProperties () |
| Method for setting declared properties to the values specified for the job. More...
|
|
template<class T > |
StatusCode | service (const std::string &name, const T *&psvc, bool createIf=true) const |
| Access a service by name, creating it if it doesn't already exist. More...
|
|
template<class T > |
StatusCode | service (const std::string &name, T *&psvc, bool createIf=true) const |
|
template<typename IFace = IService> |
SmartIF< IFace > | service (const std::string &name, bool createIf=true) const |
|
template<class T > |
StatusCode | service (const std::string &svcType, const std::string &svcName, T *&psvc) const |
| Access a service by name and type, creating it if it doesn't already exist. More...
|
|
template<class T > |
StatusCode | declarePrivateTool (ToolHandle< T > &handle, std::string toolTypeAndName="", bool createIf=true) |
| Declare used Private tool. More...
|
|
template<class T > |
StatusCode | declarePublicTool (ToolHandle< T > &handle, std::string toolTypeAndName="", bool createIf=true) |
| Declare used Public tool. More...
|
|
SmartIF< IAuditorSvc > & | auditorSvc () const |
| The standard auditor service.May not be invoked before sysInitialize() has been invoked. More...
|
|
| PropertyHolder ()=default |
|
| ~PropertyHolder () override=default |
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Details::PropertyBase &prop) |
| Declare a property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, TYPE &value, const std::string &doc="none") |
| Helper to wrap a regular data member and use it as a regular property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, TYPE &value, const std::string &doc="none") const |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, Gaudi::Property< TYPE, VERIFIER, HANDLERS > &prop, const std::string &doc="none") |
| Declare a PropertyBase instance setting name and documentation. More...
|
|
Gaudi::Details::PropertyBase * | declareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="") |
| Declare a remote property. More...
|
|
StatusCode | setProperty (const Gaudi::Details::PropertyBase &p) override |
| set the property form another property More...
|
|
StatusCode | setProperty (const std::string &s) override |
| set the property from the formatted string More...
|
|
StatusCode | setProperty (const std::string &n, const std::string &v) override |
| set the property from name and the value More...
|
|
StatusCode | setProperty (const std::string &name, const TYPE &value) |
| set the property form the value More...
|
|
StatusCode | getProperty (Gaudi::Details::PropertyBase *p) const override |
| get the property More...
|
|
const Gaudi::Details::PropertyBase & | getProperty (const std::string &name) const override |
| get the property by name More...
|
|
StatusCode | getProperty (const std::string &n, std::string &v) const override |
| convert the property to the string More...
|
|
const std::vector< Gaudi::Details::PropertyBase * > & | getProperties () const override |
| get all properties More...
|
|
bool | hasProperty (const std::string &name) const override |
| Return true if we have a property with the given name. More...
|
|
| PropertyHolder (const PropertyHolder &)=delete |
|
PropertyHolder & | operator= (const PropertyHolder &)=delete |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, ToolHandle< TYPE > &ref, const std::string &doc="none") |
| Specializations for various GaudiHandles. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, ServiceHandle< TYPE > &ref, const std::string &doc="none") |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, ToolHandleArray< TYPE > &ref, const std::string &doc="none") |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, ServiceHandleArray< TYPE > &ref, const std::string &doc="none") |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, DataObjectHandle< TYPE > &ref, const std::string &doc="none") |
|
virtual | ~CommonMessagingBase ()=default |
| Virtual destructor. More...
|
|
SmartIF< IMessageSvc > & | msgSvc () const |
| The standard message service. More...
|
|
MsgStream & | msgStream () const |
| Return an uninitialized MsgStream. More...
|
|
MsgStream & | msgStream (const MSG::Level level) const |
| Predefined configurable message stream for the efficient printouts. More...
|
|
MsgStream & | always () const |
| shortcut for the method msgStream(MSG::ALWAYS) More...
|
|
MsgStream & | fatal () const |
| shortcut for the method msgStream(MSG::FATAL) More...
|
|
MsgStream & | err () const |
| shortcut for the method msgStream(MSG::ERROR) More...
|
|
MsgStream & | error () const |
| shortcut for the method msgStream(MSG::ERROR) More...
|
|
MsgStream & | warning () const |
| shortcut for the method msgStream(MSG::WARNING) More...
|
|
MsgStream & | info () const |
| shortcut for the method msgStream(MSG::INFO) More...
|
|
MsgStream & | debug () const |
| shortcut for the method msgStream(MSG::DEBUG) More...
|
|
MsgStream & | verbose () const |
| shortcut for the method msgStream(MSG::VERBOSE) More...
|
|
MsgStream & | msg () const |
| shortcut for the method msgStream(MSG::INFO) More...
|
|
MSG::Level | msgLevel () const |
| get the output level from the embedded MsgStream More...
|
|
MSG::Level | outputLevel () const __attribute__((deprecated)) |
| Backward compatibility function for getting the output level. More...
|
|
bool | msgLevel (MSG::Level lvl) const |
| get the output level from the embedded MsgStream More...
|
|
| ~extend_interfaces () override=default |
| Virtual destructor. More...
|
|
|
void | activate () |
| Activate scheduler. More...
|
|
StatusCode | deactivate () |
| Deactivate scheduler. More...
|
|
unsigned int | algname2index (const std::string &algoname) |
| Convert a name to an integer. More...
|
|
const std::string & | index2algname (unsigned int index) |
| Convert an integer to a name. More...
|
|
StatusCode | eventFailed (EventContext *eventContext) |
| Method to check if an event failed and take appropriate actions. More...
|
|
StatusCode | updateStates (int si=-1, const std::string &algo_name=std::string()) |
| Loop on algorithm in the slots and promote them to successive states (-1 means all slots, while empty string means skipping an update of the Control Flow state) More...
|
|
StatusCode | promoteToControlReady (unsigned int iAlgo, int si) |
| Algorithm promotion: Accepted by the control flow. More...
|
|
StatusCode | promoteToDataReady (unsigned int iAlgo, int si) |
|
StatusCode | promoteToScheduled (unsigned int iAlgo, int si) |
|
StatusCode | promoteToAsyncScheduled (unsigned int iAlgo, int si) |
|
StatusCode | promoteToExecuted (unsigned int iAlgo, int si, IAlgorithm *algo, EventContext *) |
| The call to this method is triggered only from within the AlgoExecutionTask. More...
|
|
StatusCode | promoteToAsyncExecuted (unsigned int iAlgo, int si, IAlgorithm *algo, EventContext *) |
| The call to this method is triggered only from within the IOBoundAlgTask. More...
|
|
StatusCode | promoteToFinished (unsigned int iAlgo, int si) |
|
StatusCode | isStalled (int si) |
| Check if the scheduling is in a stall. More...
|
|
void | dumpSchedulerState (int iSlot) |
| Dump the state of the scheduler. More...
|
|
StatusCode | m_drain () |
| Drain the actions present in the queue. More...
|
|
void | dumpState (std::ostringstream &) |
|
|
using | base_class = extends |
| Typedef to this class. More...
|
|
using | extend_interfaces_base = extend_interfaces< Interfaces... > |
| Typedef to the base of this class. More...
|
|
typedef Gaudi::PluginService::Factory< IService *, const std::string &, ISvcLocator * > | Factory |
|
using | PropertyHolderImpl = PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > > |
| Typedef used to refer to this class from derived classes, as in. More...
|
|
using | base_class = CommonMessaging |
|
using | ext_iids = typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type |
| take union of the ext_iids of all Interfaces... More...
|
|
| ~Service () override |
| Standard Destructor. More...
|
|
int | outputLevel () const |
| get the Service's output level More...
|
|
Gaudi::Details::PropertyBase * | property (const std::string &name) const |
|
void | updateMsgStreamOutputLevel (int level) |
| Update the output level of the cached MsgStream. More...
|
|
Gaudi::StateMachine::State | m_state = Gaudi::StateMachine::OFFLINE |
| Service state. More...
|
|
Gaudi::StateMachine::State | m_targetState = Gaudi::StateMachine::OFFLINE |
| Service state. More...
|
|
Gaudi::Property< int > | m_outputLevel {this, "OutputLevel", MSG::NIL, "output level"} |
|
Gaudi::Property< bool > | m_auditInit {this, "AuditServices", false, "[[deprecated]] unused"} |
|
Gaudi::Property< bool > | m_auditorInitialize {this, "AuditInitialize", false, "trigger auditor on initialize()"} |
|
Gaudi::Property< bool > | m_auditorStart {this, "AuditStart", false, "trigger auditor on start()"} |
|
Gaudi::Property< bool > | m_auditorStop {this, "AuditStop", false, "trigger auditor on stop()"} |
|
Gaudi::Property< bool > | m_auditorFinalize {this, "AuditFinalize", false, "trigger auditor on finalize()"} |
|
Gaudi::Property< bool > | m_auditorReinitialize {this, "AuditReinitialize", false, "trigger auditor on reinitialize()"} |
|
Gaudi::Property< bool > | m_auditorRestart {this, "AuditRestart", false, "trigger auditor on restart()"} |
|
SmartIF< IAuditorSvc > | m_pAuditorSvc |
| Auditor Service. More...
|
|
The SchedulerSvc implements the IScheduler interface.
It manages all the execution states of the algorithms and interacts with the TBB runtime for the algorithm tasks submission. A state machine takes care of the tracking of the execution state of the algorithms. This is a forward scheduler: algorithms are scheduled for execution as soon as their data dependencies are available in the whiteboard.
Algorithms management
The activate() method runs in a separate thread. It checks a TBB concurrent bounded queue of closures in a loop via the Pop method. This allows not to use a cpu entirely to check the presence of new actions to be taken. In other words, the asynchronous actions are serialised via the actions queue. Once a task terminates, a call to the promoteToExecuted method will be pushed into the actions queue. The promoteToExecuted method also triggers a call to the updateStates method, which brushes all algorithms, checking if their state can be changed. It's indeed possible that upon termination of an algorithm, the control flow and/or the data flow allow the submission of more algorithms.
Algorithms dependencies
There are two ways of declaring algorithms dependencies. One which is only temporarly available to ease developments consists in declaring them through AlgosDependencies property as a list of list. The order of these sublist must be the same one of the algorithms in the TopAlg list. The second one consists in declaring the data dependencies directly within the algorithms via data object handles.
Events management
The scheduler accepts events to be processed (in the form of eventContexts) and releases processed events. This flow is implemented through three methods:
- pushNewEvent: to make an event available to the scheduler.
- tryPopFinishedEvent: to retrieve an event from the scheduler
- popFinishedEvent: to retrieve an event from the scheduler (blocking)
Please refer to the full documentation of the methods for more details.
- Author
- Danilo Piparo
-
Benedikt Hegner
- Version
- 1.1
Definition at line 84 of file ForwardSchedulerSvc.h.