Przeglądaj źródła

component-fifo/prio: accept pushing back over the duration limit

An eager scheduler below a fifo/prio might be trying to push below and
fail, and be able to push back the task it took.
Samuel Thibault 4 lat temu
rodzic
commit
52e83630fe

+ 1 - 2
src/sched_policies/component_fifo.c

@@ -105,7 +105,7 @@ static int fifo_push_local_task(struct starpu_sched_component * component, struc
 		else
 			exp_len = queue->exp_len;
 
-		if (data->exp_len_threshold != 0.0 && exp_len >= data->exp_len_threshold)
+		if (!is_pushback && data->exp_len_threshold != 0.0 && exp_len >= data->exp_len_threshold)
 		{
 			static int warned;
 			if(data->exp_len_threshold != 0.0 && task->predicted > data->exp_len_threshold && !warned)
@@ -113,7 +113,6 @@ static int fifo_push_local_task(struct starpu_sched_component * component, struc
 				_STARPU_DISP("Warning : a predicted task length (%lf) exceeds the expected length threshold (%lf) of a prio component queue, you should reconsider the value of this threshold. This message will not be printed again for further thresholds exceeding.\n",task->predicted,data->exp_len_threshold);
 				warned = 1;
 			}
-			STARPU_ASSERT(!is_pushback);
 			ret = 1;
 			STARPU_COMPONENT_MUTEX_UNLOCK(mutex);
 		}

+ 1 - 2
src/sched_policies/component_prio.c

@@ -126,7 +126,7 @@ static int prio_push_local_task(struct starpu_sched_component * component, struc
 		else
 			exp_len = queue->exp_len;
 
-		if (data->exp_len_threshold != 0.0 && exp_len >= data->exp_len_threshold)
+		if (!is_pushback && data->exp_len_threshold != 0.0 && exp_len >= data->exp_len_threshold)
 		{
 			static int warned;
 			if(data->exp_len_threshold != 0.0 && task->predicted > data->exp_len_threshold && !warned)
@@ -134,7 +134,6 @@ static int prio_push_local_task(struct starpu_sched_component * component, struc
 				_STARPU_DISP("Warning : a predicted task length (%lf) exceeds the expected length threshold (%lf) of a prio component queue, you should reconsider the value of this threshold. This message will not be printed again for further thresholds exceeding.\n",task->predicted,data->exp_len_threshold);
 				warned = 1;
 			}
-			STARPU_ASSERT(!is_pushback);
 			ret = 1;
 			STARPU_COMPONENT_MUTEX_UNLOCK(mutex);
 		}