Browse Source

check worker iterators do not overflow in dm*

Olivier Aumage 8 years ago
parent
commit
4884091088
1 changed files with 2 additions and 2 deletions
  1. 2 2
      src/sched_policies/deque_modeling_policy_data_aware.c

+ 2 - 2
src/sched_policies/deque_modeling_policy_data_aware.c

@@ -658,7 +658,7 @@ static void compute_all_performance_predictions(struct starpu_task *task,
 
 
 	struct starpu_sched_ctx_iterator it;
 	struct starpu_sched_ctx_iterator it;
 	workers->init_iterator_for_parallel_tasks(workers, &it, task);
 	workers->init_iterator_for_parallel_tasks(workers, &it, task);
-	while(workers->has_next(workers, &it))
+	while(worker_ctx<nworkers && workers->has_next(workers, &it))
 	{
 	{
 		unsigned nimpl;
 		unsigned nimpl;
 		unsigned impl_mask;
 		unsigned impl_mask;
@@ -858,7 +858,7 @@ static double _dmda_push_task(struct starpu_task *task, unsigned prio, unsigned
 		unsigned worker_ctx = 0;
 		unsigned worker_ctx = 0;
 		struct starpu_sched_ctx_iterator it;
 		struct starpu_sched_ctx_iterator it;
 		workers->init_iterator_for_parallel_tasks(workers, &it, task);
 		workers->init_iterator_for_parallel_tasks(workers, &it, task);
-		while(workers->has_next(workers, &it))
+		while(worker_ctx < nworkers_ctx && workers->has_next(workers, &it))
 		{
 		{
 			unsigned worker = workers->get_next(workers, &it);
 			unsigned worker = workers->get_next(workers, &it);
 			unsigned nimpl;
 			unsigned nimpl;