modularized_scheduler.doxy 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*! \page ModularizedScheduler Modularized Scheduler
  2. \section Introduction
  3. Scheduler are a tree-like structure of homogeneous nodes that each
  4. provides push and pop primitives.
  5. Tasks make a top bottom traversal of tree.
  6. A push call on a node make either a recursive call on one of its
  7. childs or make the task stored in the node and made available to a
  8. pop, in this case that node should call available to wake workers
  9. up. Push must be called on a child, and only if this child can execute
  10. the task.
  11. A pop call on a node can either return a localy stored task or perform
  12. a recursive call on its father in its current context. Only workers
  13. can call pop.
  14. \section Initialization
  15. The scheduler is initialized with all workers, and workers are then
  16. added or removed by simply masking them.
  17. Scheduler nodes are created by <tt> starpu_sched_node_foo_create(void
  18. \* arg) </tt>, arg may be stored in starpu_sched_node::data
  19. The starpu_sched_node::init_data is the last function to be called during
  20. initialization, it can use starpu_sched_node::workers and
  21. starpu_sched_node::data.
  22. \section WorkersAndCombinedWorkers Workers and Combined workers
  23. Leafs are either a worker node that is bind to starpu workers or a
  24. combined worker node that is bind to several worker nodes.
  25. Pushing a task on a combined worker node will in fact push a copy of
  26. that task on each worker node of the combined worker.
  27. A push call simply enqueue task in worker queue, no sort is performed
  28. here.
  29. If a worker call pop and get a parallel task, it will execute with the
  30. combined worker it belong to.
  31. */