Quellcode durchsuchen

fix dead lock, strange problem with prefetch

Simon Archipoff vor 12 Jahren
Ursprung
Commit
2a850dc977
2 geänderte Dateien mit 4 neuen und 2 gelöschten Zeilen
  1. 2 2
      src/sched_policies/node_work_stealing.c
  2. 2 0
      src/sched_policies/node_worker.c

+ 2 - 2
src/sched_policies/node_work_stealing.c

@@ -131,13 +131,13 @@ static int push_task(struct starpu_sched_node * node, struct starpu_task * task)
 	int start = wsd->last_push_child;
 	int i = start;
 	i = (i+1)%node->nchilds;
+
 	STARPU_PTHREAD_MUTEX_LOCK(wsd->mutexes + i);
 	ret = _starpu_prio_deque_push_task(wsd->fifos + i, task);
 	STARPU_PTHREAD_MUTEX_UNLOCK(wsd->mutexes + i);
 
-	node->available(node);
 	wsd->last_push_child = (start + 1) % node->nchilds;
-	node->childs[i]->available(node->childs[i]);
+	node->available(node);
 	return ret;
 }
 

+ 2 - 0
src/sched_policies/node_worker.c

@@ -284,11 +284,13 @@ int starpu_sched_node_worker_push_task(struct starpu_sched_node * node, struct s
 	t->ntasks = 1;
 
 	task->workerid = starpu_bitmap_first(node->workers);
+#if 0 /* dead lock problem */
 	if (starpu_get_prefetch_flag())
 	{
 		unsigned memory_node = starpu_worker_get_memory_node(task->workerid);
 		starpu_prefetch_task_input_on_node(task, memory_node);
 	}
+#endif
 	STARPU_PTHREAD_MUTEX_LOCK(&data->list->mutex);
 	_starpu_worker_task_list_push(data->list, t);
 	STARPU_PTHREAD_MUTEX_UNLOCK(&data->list->mutex);