Terry Cojean f005cfba52 remove unused variables vor 10 Jahren
..
README 913b6e242b Several renamings for Hierarchical Schedulers to adapt the naming vor 11 Jahren
component_best_implementation.c ce9464d6b7 Add generatation of animated html trace of modular schedulers, with code from Anthony Simonet vor 10 Jahren
component_composed.c ce9464d6b7 Add generatation of animated html trace of modular schedulers, with code from Anthony Simonet vor 10 Jahren
component_eager.c ce9464d6b7 Add generatation of animated html trace of modular schedulers, with code from Anthony Simonet vor 10 Jahren
component_eager_calibration.c ce9464d6b7 Add generatation of animated html trace of modular schedulers, with code from Anthony Simonet vor 10 Jahren
component_fifo.c ce9464d6b7 Add generatation of animated html trace of modular schedulers, with code from Anthony Simonet vor 10 Jahren
component_heft.c ce9464d6b7 Add generatation of animated html trace of modular schedulers, with code from Anthony Simonet vor 10 Jahren
component_mct.c ce9464d6b7 Add generatation of animated html trace of modular schedulers, with code from Anthony Simonet vor 10 Jahren
component_perfmodel_select.c ce9464d6b7 Add generatation of animated html trace of modular schedulers, with code from Anthony Simonet vor 10 Jahren
component_prio.c ce9464d6b7 Add generatation of animated html trace of modular schedulers, with code from Anthony Simonet vor 10 Jahren
component_random.c ce9464d6b7 Add generatation of animated html trace of modular schedulers, with code from Anthony Simonet vor 10 Jahren
component_sched.c ce9464d6b7 Add generatation of animated html trace of modular schedulers, with code from Anthony Simonet vor 10 Jahren
component_work_stealing.c ce9464d6b7 Add generatation of animated html trace of modular schedulers, with code from Anthony Simonet vor 10 Jahren
component_worker.c bb3081fb9a when pushing parallel tasks to explicit combined workers, we also need to use task aliases. Also make sure they get freed vor 10 Jahren
deque_modeling_policy_data_aware.c 0308be8d17 port r15806 from 1.1: move _STARPU_TRACE_JOB_POP call to common starpu_push_task_end place vor 10 Jahren
deque_queues.c 0308be8d17 port r15806 from 1.1: move _STARPU_TRACE_JOB_POP call to common starpu_push_task_end place vor 10 Jahren
deque_queues.h c8efbb83e8 Inline list heads instead of keeping allocating them vor 10 Jahren
eager_central_policy.c f005cfba52 remove unused variables vor 10 Jahren
eager_central_priority_policy.c 0308be8d17 port r15806 from 1.1: move _STARPU_TRACE_JOB_POP call to common starpu_push_task_end place vor 10 Jahren
fifo_queues.c 0308be8d17 port r15806 from 1.1: move _STARPU_TRACE_JOB_POP call to common starpu_push_task_end place vor 10 Jahren
fifo_queues.h bbe2eac4de consider priorities when deciding on which worker to schedule - sol 2 (static number of priorities, each worker has a list of exp_lens corresponding to each priority ) vor 10 Jahren
helper_mct.c e3b44209ed update copyright vor 10 Jahren
helper_mct.h e3b44209ed update copyright vor 10 Jahren
heteroprio.c 86808ef8a5 Only enable unsafe optimizations when not blocking drivers, and prevent helgrind from shouting about them vor 10 Jahren
hierarchical_heft.c 28e4f109a7 rename struct starpu_sched_specs into struct starpu_sched_component_specs vor 11 Jahren
locality_work_stealing_policy.c 60f805cc0d rename (forgot this file) vor 10 Jahren
modular_eager.c 5e8cba21b1 Add starpu_sched_component_connect helper and benefit from it vor 10 Jahren
modular_eager_prefetching.c 5e8cba21b1 Add starpu_sched_component_connect helper and benefit from it vor 10 Jahren
modular_heft.c ce9464d6b7 Add generatation of animated html trace of modular schedulers, with code from Anthony Simonet vor 10 Jahren
modular_heft2.c ce9464d6b7 Add generatation of animated html trace of modular schedulers, with code from Anthony Simonet vor 10 Jahren
modular_prio.c 5e8cba21b1 Add starpu_sched_component_connect helper and benefit from it vor 10 Jahren
modular_prio_prefetching.c 18b2ddbf66 Add missing creation of worker collection vor 10 Jahren
modular_random.c 5e8cba21b1 Add starpu_sched_component_connect helper and benefit from it vor 10 Jahren
modular_random_prefetching.c 5e8cba21b1 Add starpu_sched_component_connect helper and benefit from it vor 10 Jahren
modular_ws.c 86235ac148 simplify code vor 10 Jahren
parallel_eager.c bb3081fb9a when pushing parallel tasks to explicit combined workers, we also need to use task aliases. Also make sure they get freed vor 10 Jahren
parallel_heft.c bb3081fb9a when pushing parallel tasks to explicit combined workers, we also need to use task aliases. Also make sure they get freed vor 10 Jahren
prio_deque.c df41587702 Fix comments on prio deque vor 11 Jahren
prio_deque.h b34e4bb751 First step of hierarchical schedulers' restructuring. vor 12 Jahren
random_policy.c bb61f3808d update cnrs copyright vor 10 Jahren
sched_component.h a7ef69de51 Add tree field to components, to make it easy to access the sched_ctx_id, notably vor 11 Jahren
scheduler_maker.c efea5f1a8f src/ tests/ tools/: fix coding style, curly braces go on a newline vor 10 Jahren
stack_queues.c 0308be8d17 port r15806 from 1.1: move _STARPU_TRACE_JOB_POP call to common starpu_push_task_end place vor 10 Jahren
stack_queues.h c8efbb83e8 Inline list heads instead of keeping allocating them vor 10 Jahren
work_stealing_policy.c c8efbb83e8 Inline list heads instead of keeping allocating them vor 10 Jahren

README

# StarPU --- Runtime system for heterogeneous multicore architectures.
#
# Copyright (C) 2013 Simon Archipoff
#
# StarPU is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or (at
# your option) any later version.
#
# StarPU is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# See the GNU Lesser General Public License in COPYING.LGPL for more details.



Mutex policy

scheduler have to be protected when the hypervisor is modifying it.
there is a mutex in struct starpu_sched_tree wich should be taken by
the application to push a task
and one mutex per worker wich should be taken by workers when they pop
or push a task.
The hypervisor must take all of them to modifying the scheduler.



Creation/Destruction

All the struct starpu_sched_component * starpu_sched_component_foo_create()
function return a initialized struct starpu_sched_component.

The void starpu_sched_component_destroy(struct starpu_sched_component * component)
function call component->deinit_data(component) to free data allocated during
creation

Workers components are particulars, there is no creation function, only
accessor to guaranty uniqueness of worker components. worker_component->workers and
worker_component->workers_in_ctx should not be modified.



Add/Remove workers

I see 2 way for adding/removing workers of the scheduler
The hypervisor block all the scheduling and modify the scheduler in
the way it wants, and then update all component->workers_in_ctx bitmaps, and
all component->push_task should respect it.

And the second one may be done in an atomic way. The struct
starpu_sched_tree hold a struct starpu_bitmap * that represent
available workers in context. All component can make a call to struct starpu_bitmap
* starpu_sched_component_get_worker_mask(unsigned sched_ctx_id) to see
where they can push a task according to available workers.
But with this way we have a problem for component->estimated_end, in case
of fifo, we have to know how many workers are available to the fifo
component. We also have a problem for shared object. The first way seems to
be better.


Hierarchical construction

Bugs everywhere, works only in simple and particulars cases.
Its difficult to guess where we should plug accelerators because we cant rely on
hwloc topology. Hierarchical heft seems to work on simple machines with numa components
and GPUs
this fail if hwloc_socket_composed_sched_component or hwloc_cache_composed_sched_component is not
NULL


Various things

In several place realloc is used (in prio_deque and for
starpu_sched_component_add_child), because we should not have a lot
different priority level nor adding too many childs.