Classes |
class | ProcessingDevices |
Public Types |
typedef std::map< std::string,
std::tr1::shared_ptr
< Operation > > | MapNameToOperation |
Public Member Functions |
bool | addAlgorithm (const AlgorithmSpecification &alg_spec, const DeviceSpecification &dev_spec) |
| adds an Algorithm to the AlgorithmPool of an operation defined by alg_spec on the processing device defined by dev_spec.
|
bool | setOptimizationCriterion (const std::string &name_of_operation, const std::string &name_of_optimization_criterion) |
| assigns the OptimizationCriterion name_of_optimization_criterion to Operation name_of_operation
|
bool | setStatisticalMethod (const std::string &name_of_algorithm, const std::string &name_of_statistical_method) |
| assigns the StatisticalMethod name_of_statistical_method to an existing Algorithm
|
bool | setRecomputationHeuristic (const std::string &name_of_algorithm, const std::string &name_of_recomputation_strategy) |
| assigns the StatisticalMethod name_of_statistical_method to an existing Algorithm
|
const SchedulingDecision | getOptimalAlgorithm (const OperatorSpecification &op_spec, const DeviceConstraint &dev_constr) |
| Returns a Scheduling Decision, which contains the name of the estimated optimal Algorithm w.r.t. the user specified optimization criterion.
|
bool | addObservation (const SchedulingDecision &sched_dec, const double &measured_execution_time) |
| adds an observed execution time to the algorithm previously choosen by getOptimalAlgorithmName.
|
const AlgorithmPtr | getAlgorithm (const std::string &name_of_algorithm) |
| requests a pointer to Algorithm named name_of_algorithm
|
EstimatedTime | getEstimatedExecutionTime (const OperatorSpecification &op_spec, const std::string &alg_name) |
void | print () |
ProcessingDevices & | getProcessingDevices () |
Static Public Member Functions |
static Scheduler & | instance () |
| This method implements the singelton concept for the Scheduler class to avoid multiple instances.
|
Private Member Functions |
| Scheduler () |
| Constructor is private to avoid multiple instances of Scheduler.
|
| Scheduler (const Scheduler &) |
| Copy Constructor is private to avoid copying of the single instance of Scheduler.
|
Scheduler & | operator= (const Scheduler &) |
| Copy assignment operator is private to avoid copying of the single instance of Scheduler.
|
Private Attributes |
MapNameToOperation | map_operationname_to_operation_ |
| maps the name of an Operation to a pointer to an Operation object
|
StatisticalMethodMap | map_statisticalmethodname_to_statisticalmethod_ |
| maps the name of a StatisticalMethod to a pointer to a StatisticalMethod object
|
ProcessingDevices | proc_devs_ |
| stores the processing devices, which were specified by the user
|
The Scheduler is the central component for interaction of the application and the library.
The Scheduler provides two main functionalities. First, it provides the service to decide on the optimal algorithm for an operation w.r.t. a user specified optimization criterion. Second, the Scheduler implements an interface to add new Observations to the executed Algorithm. Hence, it is the central component for interaction of the application and the library. Since it is not meaningful to have multiple instances of the Scheduler class, it is not possible to create multiple Scheduler instances. This property is implemented by using the singelton concept. Additionally, the Scheduler enables the user to setup the Operations with their respective Algorithms as well as to configure for each algorithm a statistical method and a recomputation heuristic and for each operation an optimization criterion. Note that the statistical method and the recomputation statistic can be exchanged at run-time, because the Algortihm uses the pointer to implementation technique (or pimpl-idiom).
- Author:
- Sebastian Breß
- Version:
- 0.1
- Date:
- 2012
- Copyright:
- GNU LESSER GENERAL PUBLIC LICENSE - Version 3, http://www.gnu.org/licenses/lgpl-3.0.txt