|
@@ -72,7 +72,7 @@ The actual scheduler
|
|
|
\var starpu_sched_tree::sched_ctx_id
|
|
|
the context id of the scheduler
|
|
|
|
|
|
-\fn struct starpu_sched_component * starpu_sched_component_create(void)
|
|
|
+\fn struct starpu_sched_component *starpu_sched_component_create(void)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
allocate and initialize component field with defaults values :
|
|
|
.pop_task make recursive call on father
|
|
@@ -84,72 +84,72 @@ The actual scheduler
|
|
|
.deinit_data does nothing
|
|
|
|
|
|
|
|
|
-\fn void starpu_sched_component_destroy(struct starpu_sched_component * component)
|
|
|
+\fn void starpu_sched_component_destroy(struct starpu_sched_component *component)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
free data allocated by starpu_sched_component_create and call component->deinit_data(component)
|
|
|
set to null the member starpu_sched_component::fathers[sched_ctx_id] of all child if its equal to \p component
|
|
|
|
|
|
-\fn void starpu_sched_component_set_father(struct starpu_sched_component * component, struct starpu_sched_component * father_component, unsigned sched_ctx_id)
|
|
|
+\fn void starpu_sched_component_set_father(struct starpu_sched_component *component, struct starpu_sched_component *father_component, unsigned sched_ctx_id)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
set component->fathers[sched_ctx_id] to father_component
|
|
|
|
|
|
-\fn void starpu_sched_component_add_child(struct starpu_sched_component* component, struct starpu_sched_component * child)
|
|
|
+\fn void starpu_sched_component_add_child(struct starpu_sched_component *component, struct starpu_sched_component *child)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
add child to component->children and increment nchildren as well.
|
|
|
and do not modify child->fathers
|
|
|
\p child must not be already in starpu_sched_component::children of \p component
|
|
|
|
|
|
-\fn void starpu_sched_component_remove_child(struct starpu_sched_component * component, struct starpu_sched_component * child)
|
|
|
+\fn void starpu_sched_component_remove_child(struct starpu_sched_component *component, struct starpu_sched_component *child)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
remove child from component->children and decrements nchildren
|
|
|
\p child must be in starpu_sched_component::child of \p component
|
|
|
|
|
|
|
|
|
-\fn int starpu_sched_component_can_execute_task(struct starpu_sched_component * component, struct starpu_task * task)
|
|
|
+\fn int starpu_sched_component_can_execute_task(struct starpu_sched_component *component, struct starpu_task *task)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
return true iff \p component can execute \p task, this function take into account the workers available in the scheduling context
|
|
|
|
|
|
-\fn int STARPU_WARN_UNUSED_RESULT starpu_sched_component_execute_preds(struct starpu_sched_component * component, struct starpu_task * task, double * length);
|
|
|
+\fn int STARPU_WARN_UNUSED_RESULT starpu_sched_component_execute_preds(struct starpu_sched_component *component, struct starpu_task *task, double *length);
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
return a non null value if \p component can execute \p task.
|
|
|
write the execution prediction length for the best implementation of the best worker available and write this at \p length address.
|
|
|
this result is more relevant if starpu_sched_component::is_homogeneous is non null.
|
|
|
if a worker need to be calibrated for an implementation, nan is set to \p length.
|
|
|
|
|
|
-\fn double starpu_sched_component_transfer_length(struct starpu_sched_component * component, struct starpu_task * task);
|
|
|
+\fn double starpu_sched_component_transfer_length(struct starpu_sched_component *component, struct starpu_task *task);
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
return the average time to transfer \p task data to underlying \p component workers.
|
|
|
|
|
|
-\fn struct starpu_sched_component * starpu_sched_component_worker_get(int workerid)
|
|
|
+\fn struct starpu_sched_component *starpu_sched_component_worker_get(int workerid)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
return the struct starpu_sched_component corresponding to \p workerid. Undefined if \p workerid is not a valid workerid
|
|
|
|
|
|
|
|
|
-\fn int starpu_sched_component_is_worker(struct starpu_sched_component * component)
|
|
|
+\fn int starpu_sched_component_is_worker(struct starpu_sched_component *component)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
return true iff \p component is a worker component
|
|
|
-\fn int starpu_sched_component_is_simple_worker(struct starpu_sched_component * component)
|
|
|
+\fn int starpu_sched_component_is_simple_worker(struct starpu_sched_component *component)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
return true iff \p component is a simple worker component
|
|
|
-\fn int starpu_sched_component_is_combined_worker(struct starpu_sched_component * component)
|
|
|
+\fn int starpu_sched_component_is_combined_worker(struct starpu_sched_component *component)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
return true iff \p component is a combined worker component
|
|
|
-\fn int starpu_sched_component_worker_get_workerid(struct starpu_sched_component * worker_component)
|
|
|
+\fn int starpu_sched_component_worker_get_workerid(struct starpu_sched_component *worker_component)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
return the workerid of \p worker_component, undefined if starpu_sched_component_is_worker(worker_component) == 0
|
|
|
|
|
|
|
|
|
-\fn struct starpu_sched_component * starpu_sched_component_fifo_create(void * arg STARPU_ATTRIBUTE_UNUSED)
|
|
|
+\fn struct starpu_sched_component *starpu_sched_component_fifo_create(void *arg STARPU_ATTRIBUTE_UNUSED)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
Return a struct starpu_sched_component with a fifo. A stable sort is performed according to tasks priorities.
|
|
|
A push_task call on this component does not perform recursive calls, underlying components will have to call pop_task to get it.
|
|
|
starpu_sched_component::estimated_end function compute the estimated length by dividing the sequential length by the number of underlying workers. Do not take into account tasks that are currently executed.
|
|
|
|
|
|
-\fn int starpu_sched_component_is_fifo(struct starpu_sched_component * component)
|
|
|
+\fn int starpu_sched_component_is_fifo(struct starpu_sched_component *component)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
return true iff \p component is a fifo component
|
|
|
|
|
|
-\fn struct starpu_sched_component * starpu_sched_component_work_stealing_create(void * arg STARPU_ATTRIBUTE_UNUSED)
|
|
|
+\fn struct starpu_sched_component *starpu_sched_component_work_stealing_create(void *arg STARPU_ATTRIBUTE_UNUSED)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
return a component that perform a work stealing scheduling. Tasks are pushed in a round robin way. estimated_end return the average of expected length of fifos, starting at the average of the expected_end of his children. When a worker have to steal a task, it steal a task in a round robin way, and get the last pushed task of the higher priority.
|
|
|
|
|
@@ -158,11 +158,11 @@ The actual scheduler
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
undefined if there is no work stealing component in the scheduler. If any, \p task is pushed in a default way if the caller is the application, and in the caller's fifo if its a worker.
|
|
|
|
|
|
-\fn int starpu_sched_component_is_work_stealing(struct starpu_sched_component * component)
|
|
|
+\fn int starpu_sched_component_is_work_stealing(struct starpu_sched_component *component)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
return true iff \p component is a work stealing component
|
|
|
|
|
|
-\fn struct starpu_sched_component * starpu_sched_component_random_create(void * arg STARPU_ATTRIBUTE_UNUSED)
|
|
|
+\fn struct starpu_sched_component *starpu_sched_component_random_create(void *arg STARPU_ATTRIBUTE_UNUSED)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
create a component that perform a random scheduling
|
|
|
|
|
@@ -170,11 +170,11 @@ The actual scheduler
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
return true iff \p component is a random component
|
|
|
|
|
|
-\fn struct starpu_sched_component * starpu_sched_component_heft_create(struct starpu_heft_data * heft_data)
|
|
|
+\fn struct starpu_sched_component *starpu_sched_component_heft_create(struct starpu_heft_data *heft_data)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
this component perform a heft scheduling
|
|
|
|
|
|
-\fn int starpu_sched_component_is_heft(struct starpu_sched_component * component)
|
|
|
+\fn int starpu_sched_component_is_heft(struct starpu_sched_component *component)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
return true iff \p component is a heft component
|
|
|
|
|
@@ -199,7 +199,7 @@ starpu_sched_component_heft_create parameters
|
|
|
argument passed to starpu_heft_data::calibrating_component_create
|
|
|
|
|
|
|
|
|
-\fn struct starpu_sched_component * starpu_sched_component_best_implementation_create(void * arg STARPU_ATTRIBUTE_UNUSED);
|
|
|
+\fn struct starpu_sched_component *starpu_sched_component_best_implementation_create(struct starpu_sched_tree *tree, void *arg STARPU_ATTRIBUTE_UNUSED)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
Select the implementation that offer the shortest computation length for the first worker that can execute the task.
|
|
|
Or an implementation that need to be calibrated.
|
|
@@ -208,10 +208,10 @@ starpu_sched_component_heft_create parameters
|
|
|
|
|
|
|
|
|
|
|
|
-\fn struct starpu_sched_tree * starpu_sched_tree_create(void)
|
|
|
+\fn struct starpu_sched_tree *starpu_sched_tree_create(void)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
create a empty initialized starpu_sched_tree
|
|
|
-\fn void starpu_sched_tree_destroy(struct starpu_sched_tree * tree, unsigned sched_ctx_id)
|
|
|
+\fn void starpu_sched_tree_destroy(struct starpu_sched_tree *tree, unsigned sched_ctx_id)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
destroy tree and free all non shared component in it.
|
|
|
\fn void starpu_sched_component_destroy_rec (struct starpu_sched_component *component, unsigned sched_ctx_id)
|
|
@@ -219,14 +219,14 @@ starpu_sched_component_heft_create parameters
|
|
|
recursively destroy non shared parts of a \p component 's tree
|
|
|
|
|
|
|
|
|
-\fn starpu_sched_component_available(struct starpu_sched_component * component)
|
|
|
+\fn starpu_sched_component_available(struct starpu_sched_component *component)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
notify all component's underlying workers that a task is available to pop
|
|
|
|
|
|
-\fn int starpu_sched_tree_push_task(struct starpu_task * task)
|
|
|
+\fn int starpu_sched_tree_push_task(struct starpu_task *task)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
compatibility with starpu_sched_policy interface
|
|
|
-\fn struct starpu_task * starpu_sched_tree_pop_task(unsigned sched_ctx_id)
|
|
|
+\fn struct starpu_task *starpu_sched_tree_pop_task(unsigned sched_ctx_id)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
compatibility with starpu_sched_policy interface
|
|
|
\fn void starpu_sched_tree_add_workers(unsigned sched_ctx_id, int *workerids, unsigned nworkers)
|
|
@@ -235,79 +235,79 @@ starpu_sched_component_heft_create parameters
|
|
|
\fn void starpu_sched_tree_remove_workers(unsigned sched_ctx_id, int *workerids, unsigned nworkers)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
compatibility with starpu_sched_policy interface
|
|
|
-\fn void starpu_sched_component_worker_pre_exec_hook(struct starpu_task * task)
|
|
|
+\fn void starpu_sched_component_worker_pre_exec_hook(struct starpu_task *task)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
compatibility with starpu_sched_policy interface
|
|
|
update predictions for workers
|
|
|
-\fn void starpu_sched_component_worker_post_exec_hook(struct starpu_task * task)
|
|
|
+\fn void starpu_sched_component_worker_post_exec_hook(struct starpu_task *task)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
compatibility with starpu_sched_policy interface
|
|
|
|
|
|
|
|
|
-\fn void starpu_sched_tree_update_workers(struct starpu_sched_tree * t)
|
|
|
+\fn void starpu_sched_tree_update_workers(struct starpu_sched_tree *t)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
recursively set all starpu_sched_component::workers, do not take into account shared parts (except workers).
|
|
|
|
|
|
-\fn void starpu_sched_tree_update_workers_in_ctx(struct starpu_sched_tree * t)
|
|
|
+\fn void starpu_sched_tree_update_workers_in_ctx(struct starpu_sched_tree *t)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
recursively set all starpu_sched_component::workers_in_ctx, do not take into account shared parts (except workers)
|
|
|
|
|
|
\struct starpu_bitmap;
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
implement a simple bitmap
|
|
|
-\fn struct starpu_bitmap * starpu_bitmap_create(void)
|
|
|
+\fn struct starpu_bitmap *starpu_bitmap_create(void)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
create a empty starpu_bitmap
|
|
|
-\fn void starpu_bitmap_destroy(struct starpu_bitmap *)
|
|
|
+\fn void starpu_bitmap_destroy(struct starpu_bitmap *b)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
free a starpu_bitmap
|
|
|
|
|
|
-\fn void starpu_bitmap_set(struct starpu_bitmap * bitmap, int e)
|
|
|
+\fn void starpu_bitmap_set(struct starpu_bitmap *b, int e)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
- set bit \p e in \p bitmap
|
|
|
-\fn void starpu_bitmap_unset(struct starpu_bitmap * bitmap, int e)
|
|
|
+ set bit \p e in \p b
|
|
|
+\fn void starpu_bitmap_unset(struct starpu_bitmap *b, int e)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
- unset bit \p e in \p bitmap
|
|
|
+ unset bit \p e in \p b
|
|
|
|
|
|
-\fn void starpu_bitmap_unset_all(struct starpu_bitmap * bitmap)
|
|
|
+\fn void starpu_bitmap_unset_all(struct starpu_bitmap *b)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
- unset all bits in \b bitmap
|
|
|
+ unset all bits in \b b
|
|
|
|
|
|
-\fn int starpu_bitmap_get(struct starpu_bitmap * bitmap, int e);
|
|
|
+\fn int starpu_bitmap_get(struct starpu_bitmap *b, int e);
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
- return true iff bit \p e is set in \p bitmap
|
|
|
+ return true iff bit \p e is set in \p b
|
|
|
|
|
|
-\fn int starpu_bitmap_cardinal(struct starpu_bitmap * bitmap);
|
|
|
+\fn int starpu_bitmap_cardinal(struct starpu_bitmap *b);
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
- return the number of set bits in \p bitmap
|
|
|
+ return the number of set bits in \p b
|
|
|
|
|
|
|
|
|
-\fn int starpu_bitmap_first(struct starpu_bitmap * bitmap)
|
|
|
+\fn int starpu_bitmap_first(struct starpu_bitmap *b)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
- return the position of the first set bit of \p bitmap, -1 if none
|
|
|
-\fn int starpu_bitmap_last(struct starpu_bitmap * bitmap)
|
|
|
+ return the position of the first set bit of \p b, -1 if none
|
|
|
+\fn int starpu_bitmap_last(struct starpu_bitmap *b)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
- return the position of the last set bit of \p bitmap, -1 if none
|
|
|
+ return the position of the last set bit of \p b, -1 if none
|
|
|
|
|
|
-\fn int starpu_bitmap_next(struct starpu_bitmap *, int e)
|
|
|
+\fn int starpu_bitmap_next(struct starpu_bitmap *b, int e)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
- return the position of set bit right after \p e in \p bitmap, -1 if none
|
|
|
+ return the position of set bit right after \p e in \p b, -1 if none
|
|
|
|
|
|
|
|
|
\struct starpu_sched_component_composed_recipe;
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
parameters for starpu_sched_component_composed_component_create
|
|
|
|
|
|
-\fn struct starpu_sched_component_composed_recipe * starpu_sched_component_create_recipe(void)
|
|
|
+\fn struct starpu_sched_component_composed_recipe *starpu_sched_component_create_recipe(void)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
return an empty recipe for a composed component, it should not be used without modification
|
|
|
|
|
|
|
|
|
-\fn struct starpu_sched_component_composed_recipe * starpu_sched_component_create_recipe_singleton(struct starpu_sched_component *(*create_component)(void * arg), void * arg)
|
|
|
+\fn struct starpu_sched_component_composed_recipe *starpu_sched_component_create_recipe_singleton(struct starpu_sched_component *(*create_component)(void *arg), void *arg)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
return a recipe to build a composed component with a \p create_component
|
|
|
|
|
|
-\fn void starpu_sched_recipe_add_component(struct starpu_sched_component_composed_recipe * recipe, struct starpu_sched_component *(*create_component)(void * arg), void * arg)
|
|
|
+\fn void starpu_sched_recipe_add_component(struct starpu_sched_component_composed_recipe *recipe, struct starpu_sched_component *(*create_component)(void *arg), void *arg)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
add \p create_component under all previous components in recipe
|
|
|
|
|
@@ -315,7 +315,7 @@ starpu_sched_component_heft_create parameters
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
destroy composed_sched_component, this should be done after starpu_sched_component_composed_component_create was called
|
|
|
|
|
|
-\fn struct starpu_sched_component * starpu_sched_component_composed_component_create(struct starpu_sched_component_composed_recipe * recipe)
|
|
|
+\fn struct starpu_sched_component *starpu_sched_component_composed_component_create(struct starpu_sched_component_composed_recipe *recipe)
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
create a component that behave as all component of recipe where linked. Except that you cant use starpu_sched_component_is_foo function
|
|
|
if recipe contain a single create_foo arg_foo pair, create_foo(arg_foo) is returned instead of a composed component
|
|
@@ -344,7 +344,7 @@ starpu_sched_component_heft_create parameters
|
|
|
If this flag is not set, a new fifo will be built for each of them (if they have the same starpu_perf_arch and the same
|
|
|
numa component it will be shared
|
|
|
|
|
|
-\fn struct starpu_sched_tree * starpu_sched_component_make_scheduler(unsigned sched_ctx_id, struct starpu_sched_specs s);
|
|
|
+\fn struct starpu_sched_tree *starpu_sched_component_make_scheduler(unsigned sched_ctx_id, struct starpu_sched_specs s);
|
|
|
\ingroup API_Modularized_Scheduler
|
|
|
this function build a scheduler for \p sched_ctx_id according to \p s and the hwloc topology of the machine.
|
|
|
*/
|