|
| | ~AvalancheSchedulerSvc () 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 | declareTool (ToolHandle< T > &handle, std::string toolTypeAndName="", bool createIf=true) |
| | Declare used 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, GaudiHandleBase &ref, const std::string &doc="none") |
| | Specializations for various GaudiHandles. More...
|
| |
| Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, GaudiHandleArrayBase &ref, const std::string &doc="none") |
| |
| Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, DataObjectHandleBase &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 | promoteToScheduled (unsigned int iAlgo, int si) |
| | Algorithm promotion. More...
|
| |
| 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...
|
| |
Introduction
The scheduler is named after its ability to generically maximize the average intra-event task occupancy by inducing avalanche-like concurrency disclosure waves in conditions of arbitrary intra-event task precedence constraints (see section 3.2 of http://cern.ch/go/7Jn7).
Task precedence management
The scheduler is driven by graph-based task precedence management. When compared to approach used in the ForwardSchedulerSvc, the following advantages can be emphasized:
(1) Faster decision making (thus lower concurrency disclosure downtime); (2) Capacity for proactive task scheduling decision making.
Point (2) allowed to implement a number of generic, non-intrusive intra-event throughput maximization scheduling strategies.
Scheduling principles
o Task scheduling prerequisites
A task is scheduled ASA all following conditions are met:
- if a control flow (CF) graph traversal reaches the task;
- when all data flow (DF) dependencies of the task are satisfied;
- when the DF-ready task pool parsing mechanism (*) considers it, and:
- a free (or re-entrant) algorithm instance to run within the task is available;
- there is a free computational resource to run the task.
o (*) Avalanche induction strategies
The scheduler is able to maximize the intra-event throughput by applying several search strategies within the pool, prioritizing tasks according to the following types of precedence rules graph asymmetries:
(A) Local task-to-data asymmetry; (B) Local task-to-task asymmetry; (C) Global task-to-task asymmetry.
o Other mechanisms of throughput maximization
The scheduler is able to maximize the overall throughput of data processing by scheduling the CPU-blocking tasks efficiently. The mechanism can be applied to the following types of tasks:
- I/O-bound tasks;
- tasks with computation offloading (accelerators, GPGPUs, clouds, quantum computing devices..joke);
- synchronization-bound tasks.
Credits
Historically, the AvalancheSchedulerSvc branched off the ForwardSchedulerSvc and in many ways built its success on ideas and code of the latter.
- Author
- Illya Shapoval
- Version
- 1.0
Definition at line 100 of file AvalancheSchedulerSvc.h.