Skip to content

Consolidate and optimize scheduling of blocking tasks

Illya Shapoval requested to merge ishapova/Gaudi:offload-cleanup into master

... and add many other entailed (and not so) improvements to AvalancheSchedulerSvc and GaudiHive in general.

Primary:

  • integrate scheduling of CPU-blocking tasks into AvalancheSchedulerSvc for better performance and cleaner code;
  • remove IOBoundAlgSchedulerSvc and IOBoundAlgTask;
  • remove AvalancheSchedulerSvc::promoteAsyncToScheduled and AvalancheSchedulerSvc::promoteAsyncToExecuted;
  • introduce TaskSpec for better expressiveness and performance (less repetitive metadata juggling when moving tasks through FSM: less copying and fewer index-to-name conversions).

Secondary:

  • prefer std::string_view in AlgResourcePool;
  • decouple AlgoExecutionTask from TBB and rename it to AlgTask;
  • improve debug messages in AvalancheSchedulerSvc;
  • remove unnecessary StatusCode checks and prefer generalized lambdas in AlgTask, and make the latter header-only;
  • add (UN)LIKELY to many if-statements;
  • rename references to the category of tasks that can (and need to) be scheduled preemptively from 'I/O-bound' to broader 'Blocking' in Algorithm and AvalancheSchedulerSvc properties, as well as a few other facilities.
Edited by Illya Shapoval

Merge request reports