Browse Source

dmda*: add support for combined workers.

Cyril Roelandt 12 years ago
parent
commit
3a65c33bea
1 changed files with 12 additions and 1 deletions
  1. 12 1
      src/sched_policies/deque_modeling_policy_data_aware.c

+ 12 - 1
src/sched_policies/deque_modeling_policy_data_aware.c

@@ -398,7 +398,9 @@ static void compute_all_performance_predictions(struct starpu_task *task,
 
 			if (bundle)
 			{
-				STARPU_ABORT(); /* Not implemented yet. */
+				local_task_length[worker][nimpl] = starpu_task_bundle_expected_length(bundle, perf_arch, nimpl);
+				local_data_penalty[worker][nimpl] = starpu_task_bundle_expected_data_transfer_time(bundle, memory_node);
+				local_power[worker][nimpl] = starpu_task_bundle_expected_power(bundle, perf_arch,nimpl);
 			}
 			else
 			{
@@ -540,12 +542,21 @@ static int _dmda_push_task(struct starpu_task *task, unsigned prio)
 		model_best = 0.0;
 		//penality_best = 0.0;
 	}
+	else if (task->bundle)
+	{
+		enum starpu_perf_archtype perf_arch = starpu_worker_get_perf_archtype(best);
+		unsigned memory_node = starpu_worker_get_memory_node(best);
+		model_best = starpu_task_expected_length(task, perf_arch, selected_impl);
+	}
 	else
 	{
 		model_best = local_task_length[best][selected_impl];
 		//penality_best = local_data_penalty[best][best_impl];
 	}
 
+	if (task->bundle)
+		starpu_task_bundle_remove(task->bundle, task);
+
 
 	//_STARPU_DEBUG("Scheduler dmda: kernel (%u)\n", best_impl);
 	 _starpu_get_job_associated_to_task(task)->nimpl = selected_impl;