|
@@ -6,10 +6,10 @@
|
|
* See the file version.doxy for copying conditions.
|
|
* See the file version.doxy for copying conditions.
|
|
*/
|
|
*/
|
|
|
|
|
|
-/*! \defgroup API_Scheduling_Context_Hypervisor_usage Scheduling Context Hypervisor - Regular usage
|
|
|
|
|
|
+/*! \defgroup API_SC_Hypervisor_usage Scheduling Context Hypervisor - Regular usage
|
|
|
|
|
|
\fn void *sc_hypervisor_init(struct sc_hypervisor_policy *policy)
|
|
\fn void *sc_hypervisor_init(struct sc_hypervisor_policy *policy)
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
There is a single hypervisor that is in charge of resizing contexts
|
|
There is a single hypervisor that is in charge of resizing contexts
|
|
and the resizing strategy is chosen at the initialization of the
|
|
and the resizing strategy is chosen at the initialization of the
|
|
hypervisor. A single resize can be done at a time.
|
|
hypervisor. A single resize can be done at a time.
|
|
@@ -29,14 +29,14 @@ certain conditions trigger the resizing process (there is no
|
|
additional thread assigned to the hypervisor).
|
|
additional thread assigned to the hypervisor).
|
|
|
|
|
|
\fn void sc_hypervisor_shutdown(void)
|
|
\fn void sc_hypervisor_shutdown(void)
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
The hypervisor and all information concerning it is cleaned. There is
|
|
The hypervisor and all information concerning it is cleaned. There is
|
|
no synchronization between this function and starpu_shutdown(). Thus,
|
|
no synchronization between this function and starpu_shutdown(). Thus,
|
|
this should be called after starpu_shutdown(), because the performance
|
|
this should be called after starpu_shutdown(), because the performance
|
|
counters will still need allocated callback functions.
|
|
counters will still need allocated callback functions.
|
|
|
|
|
|
\fn void sc_hypervisor_register_ctx(unsigned sched_ctx, double total_flops)
|
|
\fn void sc_hypervisor_register_ctx(unsigned sched_ctx, double total_flops)
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
Scheduling Contexts that have to be resized by the hypervisor must be
|
|
Scheduling Contexts that have to be resized by the hypervisor must be
|
|
first registered to the hypervisor.
|
|
first registered to the hypervisor.
|
|
This function registers the context to the hypervisor, and indicate the number of
|
|
This function registers the context to the hypervisor, and indicate the number of
|
|
@@ -44,66 +44,66 @@ flops the context will execute (used for Gflops rate based strategy
|
|
or any other custom strategy needing it, for the others we can pass 0.0)
|
|
or any other custom strategy needing it, for the others we can pass 0.0)
|
|
|
|
|
|
\fn void sc_hypervisor_unregister_ctx(unsigned sched_ctx)
|
|
\fn void sc_hypervisor_unregister_ctx(unsigned sched_ctx)
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
Whenever we want to exclude
|
|
Whenever we want to exclude
|
|
contexts from the resizing process we have to unregister them from the
|
|
contexts from the resizing process we have to unregister them from the
|
|
hypervisor.
|
|
hypervisor.
|
|
|
|
|
|
\fn void sc_hypervisor_resize_ctxs(int *sched_ctxs, int nsched_ctxs , int *workers, int nworkers)
|
|
\fn void sc_hypervisor_resize_ctxs(int *sched_ctxs, int nsched_ctxs , int *workers, int nworkers)
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
Requires reconsidering the distribution of ressources over the indicated scheduling contexts
|
|
Requires reconsidering the distribution of ressources over the indicated scheduling contexts
|
|
|
|
|
|
\fn void sc_hypervisor_stop_resize(unsigned sched_ctx)
|
|
\fn void sc_hypervisor_stop_resize(unsigned sched_ctx)
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
The user can totally forbid the resizing of a certain context or can
|
|
The user can totally forbid the resizing of a certain context or can
|
|
then change his mind and allow it (in this case the resizing is
|
|
then change his mind and allow it (in this case the resizing is
|
|
managed by the hypervisor, that can forbid it or allow it)
|
|
managed by the hypervisor, that can forbid it or allow it)
|
|
|
|
|
|
\fn void sc_hypervisor_start_resize(unsigned sched_ctx)
|
|
\fn void sc_hypervisor_start_resize(unsigned sched_ctx)
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
Allow resizing of a context. The user can then provide information to
|
|
Allow resizing of a context. The user can then provide information to
|
|
the hypervisor concerning the conditions of resizing.
|
|
the hypervisor concerning the conditions of resizing.
|
|
|
|
|
|
\fn char *sc_hypervisor_get_policy();
|
|
\fn char *sc_hypervisor_get_policy();
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
Returns the name of the resizing policy the hypervisor uses
|
|
Returns the name of the resizing policy the hypervisor uses
|
|
|
|
|
|
\fn void sc_hypervisor_add_workers_to_sched_ctx(int* workers_to_add, unsigned nworkers_to_add, unsigned sched_ctx)
|
|
\fn void sc_hypervisor_add_workers_to_sched_ctx(int* workers_to_add, unsigned nworkers_to_add, unsigned sched_ctx)
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
Ask the hypervisor to add workers to a sched_ctx
|
|
Ask the hypervisor to add workers to a sched_ctx
|
|
|
|
|
|
\fn void sc_hypervisor_remove_workers_from_sched_ctx(int* workers_to_remove, unsigned nworkers_to_remove, unsigned sched_ctx, unsigned now)
|
|
\fn void sc_hypervisor_remove_workers_from_sched_ctx(int* workers_to_remove, unsigned nworkers_to_remove, unsigned sched_ctx, unsigned now)
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
Ask the hypervisor to remove workers from a sched_ctx
|
|
Ask the hypervisor to remove workers from a sched_ctx
|
|
|
|
|
|
\fn void sc_hypervisor_move_workers(unsigned sender_sched_ctx, unsigned receiver_sched_ctx, int *workers_to_move, unsigned nworkers_to_move, unsigned now)
|
|
\fn void sc_hypervisor_move_workers(unsigned sender_sched_ctx, unsigned receiver_sched_ctx, int *workers_to_move, unsigned nworkers_to_move, unsigned now)
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
Moves workers from one context to another
|
|
Moves workers from one context to another
|
|
|
|
|
|
\fn void sc_hypervisor_size_ctxs(unsigned *sched_ctxs, int nsched_ctxs, int *workers, int nworkers)
|
|
\fn void sc_hypervisor_size_ctxs(unsigned *sched_ctxs, int nsched_ctxs, int *workers, int nworkers)
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
Ask the hypervisor to chose a distribution of workers in the required contexts
|
|
Ask the hypervisor to chose a distribution of workers in the required contexts
|
|
|
|
|
|
|
|
|
|
\fn void sc_hypervisor_set_type_of_task(struct starpu_codelet *cl, unsigned sched_ctx, uint32_t footprint, size_t data_size)
|
|
\fn void sc_hypervisor_set_type_of_task(struct starpu_codelet *cl, unsigned sched_ctx, uint32_t footprint, size_t data_size)
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
Indicate the types of tasks a context will execute in order to better decide the sizing of ctxs
|
|
Indicate the types of tasks a context will execute in order to better decide the sizing of ctxs
|
|
|
|
|
|
\fn void sc_hypervisor_update_diff_total_flops(unsigned sched_ctx, double diff_total_flops)
|
|
\fn void sc_hypervisor_update_diff_total_flops(unsigned sched_ctx, double diff_total_flops)
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
Change dynamically the total number of flops of a context, move the deadline of the finishing time of the context
|
|
Change dynamically the total number of flops of a context, move the deadline of the finishing time of the context
|
|
|
|
|
|
\fn void sc_hypervisor_update_diff_elapsed_flops(unsigned sched_ctx, double diff_task_flops)
|
|
\fn void sc_hypervisor_update_diff_elapsed_flops(unsigned sched_ctx, double diff_task_flops)
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
Change dynamically the number of the elapsed flops in a context, modify the past in order to better compute the speed
|
|
Change dynamically the number of the elapsed flops in a context, modify the past in order to better compute the speed
|
|
|
|
|
|
\fn void sc_hypervisor_ctl(unsigned sched_ctx, ...)
|
|
\fn void sc_hypervisor_ctl(unsigned sched_ctx, ...)
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
Inputs conditions to the context sched_ctx with the following
|
|
Inputs conditions to the context sched_ctx with the following
|
|
arguments. The argument list must be zero-terminated.
|
|
arguments. The argument list must be zero-terminated.
|
|
|
|
|
|
\def SC_HYPERVISOR_MAX_IDLE
|
|
\def SC_HYPERVISOR_MAX_IDLE
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
followed by 3 arguments: an array of int for the workerids to apply
|
|
followed by 3 arguments: an array of int for the workerids to apply
|
|
the condition, an int to indicate the size of the array, and a double
|
|
the condition, an int to indicate the size of the array, and a double
|
|
@@ -111,7 +111,7 @@ value indicating the maximum idle time allowed for a worker before the
|
|
resizing process should be triggered
|
|
resizing process should be triggered
|
|
|
|
|
|
\def SC_HYPERVISOR_PRIORITY
|
|
\def SC_HYPERVISOR_PRIORITY
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
followed by 3 arguments: an array of int for the workerids to apply
|
|
followed by 3 arguments: an array of int for the workerids to apply
|
|
the condition, an int to indicate the size of the array, and an int
|
|
the condition, an int to indicate the size of the array, and an int
|
|
@@ -119,20 +119,20 @@ value indicating the priority of the workers previously mentioned. The
|
|
workers with the smallest priority are moved the first.
|
|
workers with the smallest priority are moved the first.
|
|
|
|
|
|
\def SC_HYPERVISOR_MIN_WORKERS
|
|
\def SC_HYPERVISOR_MIN_WORKERS
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
followed by 1 argument(int) indicating the minimum number of workers a
|
|
followed by 1 argument(int) indicating the minimum number of workers a
|
|
context should have, underneath this limit the context cannot execute.
|
|
context should have, underneath this limit the context cannot execute.
|
|
|
|
|
|
\def SC_HYPERVISOR_MAX_WORKERS
|
|
\def SC_HYPERVISOR_MAX_WORKERS
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
followed by 1 argument(int) indicating the maximum number of workers a
|
|
followed by 1 argument(int) indicating the maximum number of workers a
|
|
context should have, above this limit the context would not be able to
|
|
context should have, above this limit the context would not be able to
|
|
scale
|
|
scale
|
|
|
|
|
|
\def SC_HYPERVISOR_GRANULARITY
|
|
\def SC_HYPERVISOR_GRANULARITY
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
followed by 1 argument(int) indicating the granularity of the resizing
|
|
followed by 1 argument(int) indicating the granularity of the resizing
|
|
process (the number of workers should be moved from the context once
|
|
process (the number of workers should be moved from the context once
|
|
@@ -141,14 +141,14 @@ strategy (see \ref ResizingStrategies), the number of workers that have to
|
|
be moved is calculated by the strategy.
|
|
be moved is calculated by the strategy.
|
|
|
|
|
|
\def SC_HYPERVISOR_FIXED_WORKERS
|
|
\def SC_HYPERVISOR_FIXED_WORKERS
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
followed by 2 arguments: an array of int for the workerids to apply
|
|
followed by 2 arguments: an array of int for the workerids to apply
|
|
the condition and an int to indicate the size of the array. These
|
|
the condition and an int to indicate the size of the array. These
|
|
workers are not allowed to be moved from the context.
|
|
workers are not allowed to be moved from the context.
|
|
|
|
|
|
\def SC_HYPERVISOR_MIN_TASKS
|
|
\def SC_HYPERVISOR_MIN_TASKS
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
followed by 1 argument (int) that indicated the minimum number of
|
|
followed by 1 argument (int) that indicated the minimum number of
|
|
tasks that have to be executed before the context could be resized.
|
|
tasks that have to be executed before the context could be resized.
|
|
@@ -157,34 +157,34 @@ ResizingStrategies) where the user indicates exactly when the resize
|
|
should be done.
|
|
should be done.
|
|
|
|
|
|
\def SC_HYPERVISOR_NEW_WORKERS_MAX_IDLE
|
|
\def SC_HYPERVISOR_NEW_WORKERS_MAX_IDLE
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
followed by 1 argument, a double value indicating the maximum idle
|
|
followed by 1 argument, a double value indicating the maximum idle
|
|
time allowed for workers that have just been moved from other contexts
|
|
time allowed for workers that have just been moved from other contexts
|
|
in the current context.
|
|
in the current context.
|
|
|
|
|
|
\def SC_HYPERVISOR_TIME_TO_APPLY
|
|
\def SC_HYPERVISOR_TIME_TO_APPLY
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
followed by 1 argument (int) indicating the tag an executed task
|
|
followed by 1 argument (int) indicating the tag an executed task
|
|
should have such that this configuration should be taken into account.
|
|
should have such that this configuration should be taken into account.
|
|
|
|
|
|
|
|
|
|
\def SC_HYPERVISOR_ISPEED_W_SAMPLE
|
|
\def SC_HYPERVISOR_ISPEED_W_SAMPLE
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
followed by 1 argument, a double, that indicates the number of flops
|
|
followed by 1 argument, a double, that indicates the number of flops
|
|
needed to be executed before computing the speed of a worker
|
|
needed to be executed before computing the speed of a worker
|
|
|
|
|
|
\def SC_HYPERVISOR_ISPEED_CTX_SAMPLE
|
|
\def SC_HYPERVISOR_ISPEED_CTX_SAMPLE
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
followed by 1 argument, a double, that indicates the number of flops
|
|
followed by 1 argument, a double, that indicates the number of flops
|
|
needed to be executed before computing the speed of a context
|
|
needed to be executed before computing the speed of a context
|
|
|
|
|
|
|
|
|
|
\def SC_HYPERVISOR_NULL
|
|
\def SC_HYPERVISOR_NULL
|
|
-\ingroup API_Scheduling_Context_Hypervisor_usage
|
|
|
|
|
|
+\ingroup API_SC_Hypervisor_usage
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
This macro is used when calling sc_hypervisor_ctl() and must be
|
|
followed by 1 arguments
|
|
followed by 1 arguments
|
|
|
|
|