Schedulers
This section provides detailed information about all the schedulers that are implemented in COMPSs and can be used for the executions of the applications. Depending on the scheduler selected for your executions the tasks will be scheduled in a way or another and this will result in different execution times depending on the scheduler used.
COMPSs schedulers are organized in three families:
Order strict: Policies give a priority to those tasks that become dependency free tasks. Only the dependency-free task with a higher priority can be submitted to execution. Tasks with lower priority can not overtake the execution of higher-priority tasks even if there are free resources that could host the execution of the former ones.
Lookahead: As with o the order-strict family, policies give tasks a priority when they become dependency free. However, in this case, if there are not enough resources to host the execution of the highest-priority dependency-free task, another task with a lower priority can be submitted for execution overtaking the execution of the most prioritary one.
Successors: Within this family, an important group of schedulers give a higher priority to the tasks that become dependency-free when trying to submit an action to fill the resources released by their data predecessor.
Full graph: Unlike the other two families that only consider dependency-free tasks, full-graph policies schedule the whole graph of the application on the currently available resources. Besides task dependencies, full-graph policies declare resources dependencies among tasks to guarantee resource constraints, and redefines them dynamically to optimize the execution.
Schedulers provided within the COMPSs release:
Class name |
Family |
Description |
Comments |
---|---|---|---|
es.bsc.compss.scheduler.orderstrict.fifo.FifoTS |
order-strict |
Prioratizes task generation order (FIFO). |
|
es.bsc.compss.scheduler.lookahead.fifo.FifoTS |
lookahead |
Prioratizes task generation order (FIFO). |
|
es.bsc.compss.scheduler.lookahead.lifo.LifoTS |
lookahead |
Prioratizes task generation order (LIFO). |
|
es.bsc.compss.scheduler.lookahead.locality.LocalityTS |
lookahead |
Prioratizes data location and then (FIFO) task generation. |
Default on runcompss executions |
es.bsc.compss.scheduler.lookahead.successors.locality.LocalityTS |
lookahead - successors |
Prioratizes the successors of the ended task, then the data locality on the worker and then the generation order. |
Default for local disk executions on SCs |
es.bsc.compss.scheduler.lookahead.mt.successors.locality.LocalityTS |
lookahead - successors |
Prioratizes the successors of the ended task, then the data locality on the worker and then the generation order. |
Multi-threaded implementation. |
es.bsc.compss.scheduler.lookahead.successors.fifo.FifoTS |
lookahead - successors |
Prioratizes the successors of the ended task, and then the generation order. |
|
es.bsc.compss.scheduler.lookahead.mt.successors.fifo.FifoTS |
lookahead - successors |
Prioratizes the successors of the ended task, and then the generation order. |
Multi-threaded implementation. Default for shared disk executions on SCs |
es.bsc.compss.scheduler.lookahead.successors.lifo.LifoTS |
lookahead - successors |
Prioratizes the successors of the ended task, and then the inverse generation order. |
|
es.bsc.compss.scheduler.lookahead.mt.successors.lifo.LifoTS |
lookahead - successors |
Prioratizes the successors of the ended task, and then the inverse generation order. |
Multi-threaded implementation. |
es.bsc.compss.scheduler.lookahead.successors.constraintsfifo.ConstraintsFifoTS |
lookahead - successors |
Prioratizes the successors of the ended task, then the task constraints (computing_units) and then generation order (FIFO). |
|
es.bsc.compss.scheduler.lookahead.mt.successors.constraintsfifo.ConstraintsFifoTS |
lookahead - successors |
Prioratizes the successors of the ended task, then the task constraints (computing_units) and then generation order (FIFO). |
Multi-threaded implementation |
es.bsc.compss.scheduler.fullgraph.multiobjective.MOScheduler |
full graph |
Based on a multi-objective function (time, energy, cost). |
Specifying the --scheduler=<class>
option when launching a COMPSs execution with
enqueue_compss
or runcompss
selects the scheduler that will drive the execution.
In the case of having an agents deployment, the option indicates the scheduler used by
that agent; agents deployment allows combining different scheduling strategies by
setting up a different policy on each agent.
With the --input_profile=<path>
option, application users can pass in to COMPSs the
task profiles obtained from previous executions. Thus, the scheduler makes better
decisions from an early time of the execution. To indicate the runtime a file where to
save these profiles at the end of the execution, it is necessary that the user specifies
the --output_profile=<path>
option. If both paths match, the runtime will update its
content.