Simon Archipoff %!s(int64=12) %!d(string=hai) anos
pai
achega
954b28b9ce

+ 5 - 0
src/sched_policies/node_fifo.c

@@ -52,6 +52,7 @@ static int push_task(struct _starpu_sched_node * node, struct starpu_task * task
 	struct _starpu_fifo_taskq * fifo = node->data;
 	int ret = _starpu_fifo_push_sorted_task(fifo, task);
 	fifo->exp_end += task->predicted/node->nworkers;
+	fifo->exp_len += task->predicted/node->nworkers;
 	STARPU_PTHREAD_RWLOCK_UNLOCK(&node->mutex);
 	node->available(node);
 	return ret;
@@ -63,7 +64,11 @@ static struct starpu_task * pop_task(struct _starpu_sched_node * node, unsigned
 	STARPU_PTHREAD_RWLOCK_WRLOCK(&node->mutex);
 	struct starpu_task * task  = _starpu_fifo_pop_task(fifo, starpu_worker_get_id());
 	if(task)
+	{
 		fifo->exp_start = starpu_timing_now() + task->predicted;
+		if(!isnan(task->predicted))
+			fifo->exp_len -= task->predicted/node->nworkers;
+	}
 	STARPU_PTHREAD_RWLOCK_UNLOCK(&node->mutex);
 	if(task)
 		return task;

+ 1 - 1
src/sched_policies/node_random.c

@@ -81,7 +81,7 @@ static int push_task(struct _starpu_sched_node * node, struct starpu_task * task
 		}
 		alpha += rd->relative_speedup[index];
 	}
-	STARPU_ASSERT(select != NULL);
+	STARPU_ASSERT(select != NULL);t
 	int ret_val = select->push_task(select,task);
 	node->available(node);
 //	STARPU_PTHREAD_RWLOCK_UNLOCK(&node->mutex);

+ 2 - 2
src/sched_policies/node_sched.c

@@ -263,10 +263,10 @@ int _starpu_sched_node_can_execute_task(struct _starpu_sched_node * node, struct
 	unsigned nimpl;
 	int worker;
 	STARPU_ASSERT(task);
-
+	STARPU_ASSERT(node);
 	for (nimpl = 0; nimpl < STARPU_MAXIMPLEMENTATIONS; nimpl++)
 		for(worker = 0; worker < node->nworkers; worker++)
-			if (starpu_worker_can_execute_task(worker, task, nimpl))
+			if (starpu_worker_can_execute_task(node->workerids[worker], task, nimpl))
 				return 1;
 	return 0;
 }