Accéder au contenu.
Menu Sympa

starpu-devel - [Starpu-devel] [PATCH 1/5] dmda*: Add a pre_exec_hook, taken from heft.

Objet : Developers list for StarPU

Archives de la liste

[Starpu-devel] [PATCH 1/5] dmda*: Add a pre_exec_hook, taken from heft.


Chronologique Discussions 
  • From: Cyril Roelandt <cyril.roelandt@inria.fr>
  • To: starpu-devel@lists.gforge.inria.fr
  • Subject: [Starpu-devel] [PATCH 1/5] dmda*: Add a pre_exec_hook, taken from heft.
  • Date: Wed, 28 Nov 2012 00:35:08 +0100
  • List-archive: <http://lists.gforge.inria.fr/pipermail/starpu-devel>
  • List-id: "Developers list. For discussion of new features, code changes, etc." <starpu-devel.lists.gforge.inria.fr>

---
.../deque_modeling_policy_data_aware.c | 25
+++++++++++++++++---
1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/trunk/src/sched_policies/deque_modeling_policy_data_aware.c
b/trunk/src/sched_policies/deque_modeling_policy_data_aware.c
index c2cef81..ab9bc6c 100644
--- a/trunk/src/sched_policies/deque_modeling_policy_data_aware.c
+++ b/trunk/src/sched_policies/deque_modeling_policy_data_aware.c
@@ -640,6 +640,25 @@ static void deinitialize_dmda_policy(struct
starpu_machine_topology *topology,
_STARPU_DEBUG("total_task_cnt %ld ready_task_cnt %ld -> %f\n",
total_task_cnt, ready_task_cnt, (100.0f*ready_task_cnt)/total_task_cnt);
}

+/* dmda_pre_exec_hook is called right after the data transfer is done and
right
+ * before the computation to begin, it is useful to update more precisely the
+ * value of the expected start, end, length, etc... */
+static void dmda_pre_exec_hook(struct starpu_task *task)
+{
+ int workerid = starpu_worker_get_id();
+ struct _starpu_fifo_taskq *fifo = queue_array[workerid];
+ double model = task->predicted;
+ double transfer_model = task->predicted_transfer;
+
+ /* Once the task is executing, we can update the predicted amount of
+ * work. */
+ _STARPU_PTHREAD_MUTEX_LOCK(&sched_mutex[workerid]);
+ fifo->exp_len-= transfer_model;
+ fifo->exp_start = starpu_timing_now() + model;
+ fifo->exp_end= fifo->exp_start + fifo->exp_len;
+ _STARPU_PTHREAD_MUTEX_UNLOCK(&sched_mutex[workerid]);
+}
+
/* TODO: use post_exec_hook to fix the expected start */
struct starpu_sched_policy _starpu_sched_dm_policy =
{
@@ -660,7 +679,7 @@ struct starpu_sched_policy _starpu_sched_dmda_policy =
.deinit_sched = deinitialize_dmda_policy,
.push_task = dmda_push_task,
.pop_task = dmda_pop_task,
- .pre_exec_hook = NULL,
+ .pre_exec_hook = dmda_pre_exec_hook,
.post_exec_hook = NULL,
.pop_every_task = dmda_pop_every_task,
.policy_name = "dmda",
@@ -673,7 +692,7 @@ struct starpu_sched_policy
_starpu_sched_dmda_sorted_policy =
.deinit_sched = deinitialize_dmda_policy,
.push_task = dmda_push_sorted_task,
.pop_task = dmda_pop_ready_task,
- .pre_exec_hook = NULL,
+ .pre_exec_hook = dmda_pre_exec_hook,
.post_exec_hook = NULL,
.pop_every_task = dmda_pop_every_task,
.policy_name = "dmdas",
@@ -686,7 +705,7 @@ struct starpu_sched_policy
_starpu_sched_dmda_ready_policy =
.deinit_sched = deinitialize_dmda_policy,
.push_task = dmda_push_task,
.pop_task = dmda_pop_ready_task,
- .pre_exec_hook = NULL,
+ .pre_exec_hook = dmda_pre_exec_hook,
.post_exec_hook = NULL,
.pop_every_task = dmda_pop_every_task,
.policy_name = "dmdar",
--
1.7.10.4






Archives gérées par MHonArc 2.6.19+.

Haut de le page