|
@@ -52,7 +52,7 @@ useful functions include starpu_transfer_bandwidth(), starpu_transfer_latency(),
|
|
|
starpu_transfer_predict(), ...
|
|
|
One can also directly test the presence of a data handle with starpu_data_is_on_node(). Prefetches can be triggered by calling starpu_prefetch_task_input_for().
|
|
|
starpu_get_prefetch_flag() is a convenient helper for checking the value of the
|
|
|
-STARPU_PREFETCH environment variable.
|
|
|
+\ref STARPU_PREFETCH environment variable.
|
|
|
|
|
|
Usual functions can be used on tasks, for instance one can use the following to
|
|
|
get the data size for a task.
|
|
@@ -104,7 +104,7 @@ scheduler to implement what is between. A simple eager scheduler is for instance
|
|
|
to make starpu_sched_policy::push_task push the task to a global list, and make
|
|
|
starpu_sched_policy::pop_task pop from this list. A scheduler can also use
|
|
|
starpu_push_local_task() to directly push tasks to a per-worker queue, and then
|
|
|
-starpu_does not even need to implement starpu_sched_policy::pop_task.
|
|
|
+starpu does not even need to implement starpu_sched_policy::pop_task.
|
|
|
If there are no ready tasks within the scheduler, it can just return \c NULL, and
|
|
|
the worker will sleep.
|
|
|
|
|
@@ -290,7 +290,7 @@ Scheduler :
|
|
|
Modularized Scheduler, to store incoming tasks from StarPU. It can for
|
|
|
instance be a global component at the top of the tree, or one component
|
|
|
per worker at the bottom of the tree, or intermediate assemblies. The
|
|
|
- important point is that the starpu_push_task() call at the top can not
|
|
|
+ important point is that the starpu_sched_component::push_task call at the top can not
|
|
|
fail, so there has to be a storage component without threshold between
|
|
|
the top of the tree and the first storage component with threshold, or
|
|
|
the workers themselves.
|
|
@@ -450,7 +450,7 @@ struct starpu_sched_policy _starpu_sched_tree_eager_prefetching_policy =
|
|
|
};
|
|
|
\endcode
|
|
|
|
|
|
-Other modular scheduler examples can be seen in \c src/sched_policies/modular_*.c
|
|
|
+Other modular scheduler examples can be seen in <c>src/sched_policies/modular_*.c</c>
|
|
|
|
|
|
For instance, \c modular-heft-prio needs performance models, decides
|
|
|
memory nodes, uses prioritized fifos above and below, and decides the best
|
|
@@ -458,7 +458,7 @@ implementation.
|
|
|
|
|
|
If unsure on the result of the modular scheduler construction, you can run a
|
|
|
simple application with FxT enabled (see \ref GeneratingTracesWithFxT), and open
|
|
|
-trace.html in a web-browser.
|
|
|
+the generated file \c trace.html in a web-browser.
|
|
|
|
|
|
\subsection WriteASchedulingComponent Writing a Scheduling Component
|
|
|
|
|
@@ -476,10 +476,10 @@ not implement the Push function.
|
|
|
A Scheduling Component must implement all the functions of the Interface. It is
|
|
|
so necessary to implement a Push function to instantiate a Scheduling Component.
|
|
|
The implemented Push function is the "fingerprint" of a Scheduling Component.
|
|
|
-Depending on how functionalities or properties the programmer wants to give
|
|
|
-to the Scheduling Component he is implementing, it is possible to reimplement
|
|
|
+Depending on how functionalities or properties programmers want to give
|
|
|
+to the Scheduling Component they are implementing, it is possible to reimplement
|
|
|
all the functions of the Interface. For example, a Flow-control Component
|
|
|
-reimplements the Pull and the Can_Push functions of the Interface, allowing him
|
|
|
+reimplements the Pull and the Can_Push functions of the Interface, allowing
|
|
|
to catch the generic recursive calls of these functions. The Pull function of
|
|
|
a Flow-control Component can, for example, pop a task from the local storage
|
|
|
queue of the Component, and give it to the calling Component which asks for it.
|
|
@@ -553,7 +553,7 @@ The idea is that while the application submits tasks, they are only pushed
|
|
|
to a bag of tasks. When the application is finished with submitting tasks,
|
|
|
it calls starpu_do_schedule() (or starpu_task_wait_for_all(), which calls
|
|
|
starpu_do_schedule()), and the starpu_sched_policy::do_schedule method of the
|
|
|
-scheduler is called. This method calls _starpu_graph_compute_depths to compute
|
|
|
+scheduler is called. This method calls \c _starpu_graph_compute_depths() to compute
|
|
|
the bottom-up ranks, and then uses these ranks to set priorities over tasks.
|
|
|
|
|
|
It then has two priority queues, one for CPUs, and one for GPUs, and uses a dumb
|