|
@@ -127,8 +127,6 @@ The <b>peager</b> (parallel eager) scheduler is similar to eager, it also
|
|
|
supports parallel tasks (still experimental). Should not be used when several
|
|
|
contexts using it are being executed simultaneously.
|
|
|
|
|
|
-TODO: describe modular schedulers
|
|
|
-
|
|
|
\section TaskDistributionVsDataTransfer Task Distribution Vs Data Transfer
|
|
|
|
|
|
Distributing tasks to balance the load induces data transfer penalty. StarPU
|
|
@@ -204,25 +202,25 @@ StarPU provides a powerful way to implement schedulers, as documented in \ref
|
|
|
DefiningANewModularSchedulingPolicy . It is currently shipped with the following
|
|
|
pre-defined Modularized Schedulers :
|
|
|
|
|
|
-- Eager-based Schedulers (with/without prefetching : \c modular-eager ,
|
|
|
-\c modular-eager-prefetching) : \n
|
|
|
+- Eager-based Schedulers (with/without prefetching : <b>modular-eager</b> ,
|
|
|
+<b>modular-eager-prefetching</b>) : \n
|
|
|
Naive scheduler, which tries to map a task on the first available resource
|
|
|
it finds. The prefecthing variant queues several tasks in advance to be able to
|
|
|
do data prefetching. This may however degrade load balancing a bit.
|
|
|
|
|
|
- Prio-based Schedulers (with/without prefetching :
|
|
|
-\c modular-prio, \c modular-prio-prefetching , \c modular-eager-prio) : \n
|
|
|
+<b>modular-prio</b>, <b>modular-prio-prefetching</b>, <b>modular-eager-prio</b>) : \n
|
|
|
Similar to Eager-Based Schedulers. Can handle tasks which have a defined
|
|
|
priority and schedule them accordingly.
|
|
|
-The \c modular-eager-prio variant integrates the eager and priority queue in a
|
|
|
+The <b>modular-eager-prio</b> variant integrates the eager and priority queue in a
|
|
|
single component. This allows it to do a better job at pushing tasks.
|
|
|
|
|
|
-- Random-based Schedulers (with/without prefetching: \c modular-random,
|
|
|
-\c modular-random-prio, \c modular-random-prefetching, \c
|
|
|
-modular-random-prio-prefetching) : \n
|
|
|
+- Random-based Schedulers (with/without prefetching: <b>modular-random</b>,
|
|
|
+<b>modular-random-prio</b>, <b>modular-random-prefetching</b>,
|
|
|
+<b>modular-random-prio-prefetching</b>) : \n
|
|
|
Selects randomly a resource to be mapped on for each task.
|
|
|
|
|
|
-- Work Stealing (\c modular-ws) : \n
|
|
|
+- Work Stealing (<b>modular-ws</b>) : \n
|
|
|
Maps tasks to workers in round robin, but allows workers to steal work from other workers.
|
|
|
|
|
|
- HEFT Scheduler : \n
|
|
@@ -231,14 +229,14 @@ Heterogeneous Earliest Finish Time.
|
|
|
It needs that every task submitted to StarPU have a
|
|
|
defined performance model (\ref PerformanceModelCalibration)
|
|
|
to work efficiently, but can handle tasks without a performance
|
|
|
-model. \c modular-heft just takes tasks by priority order. \c modular-heft takes
|
|
|
-at most 5 tasks of the same priority and checks which one fits best. \c
|
|
|
-modular-heft-prio is similar to \c modular-heft, but only decides the memory
|
|
|
+model. <b>modular-heft</b> just takes tasks by priority order. <b>modular-heft</b> takes
|
|
|
+at most 5 tasks of the same priority and checks which one fits best.
|
|
|
+<b>modular-heft-prio</b> is similar to <b>modular-heft</b>, but only decides the memory
|
|
|
node, not the exact worker, just pushing tasks to one central queue per memory
|
|
|
node.
|
|
|
|
|
|
- Heteroprio Scheduler: \n
|
|
|
-Maps tasks to worker similarly to HEFT, but first attribute accelerated tasks to
|
|
|
+<b>modular-heteroprio</b>Maps tasks to worker similarly to HEFT, but first attribute accelerated tasks to
|
|
|
GPUs, then not-so-accelerated tasks to CPUs.
|
|
|
|
|
|
To use one of these schedulers, one can set the environment variable \ref STARPU_SCHED.
|