|
@@ -304,13 +304,13 @@ struct starpu_task *_starpu_get_worker_task(struct _starpu_worker *args, int wor
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
- STARPU_PTHREAD_MUTEX_UNLOCK(&args->sched_mutex);
|
|
|
-
|
|
|
_starpu_worker_set_status_scheduling_done(workerid);
|
|
|
|
|
|
_starpu_worker_set_status_wakeup(workerid);
|
|
|
args->spinning_backoff = BACKOFF_MIN;
|
|
|
|
|
|
+ STARPU_PTHREAD_MUTEX_UNLOCK(&args->sched_mutex);
|
|
|
+
|
|
|
|
|
|
#ifdef HAVE_AYUDAME_H
|
|
|
if (AYU_event)
|
|
@@ -341,13 +341,16 @@ int _starpu_get_multi_worker_task(struct _starpu_worker *workers, struct starpu_
|
|
|
/*else try to pop a task*/
|
|
|
else
|
|
|
{
|
|
|
- _starpu_worker_set_status_scheduling(workers[i].workerid);
|
|
|
STARPU_PTHREAD_MUTEX_LOCK(&workers[i].sched_mutex);
|
|
|
+ _starpu_worker_set_status_scheduling(workers[i].workerid);
|
|
|
_starpu_set_local_worker_key(&workers[i]);
|
|
|
tasks[i] = _starpu_pop_task(&workers[i]);
|
|
|
- STARPU_PTHREAD_MUTEX_UNLOCK(&workers[i].sched_mutex);
|
|
|
if(tasks[i] != NULL)
|
|
|
{
|
|
|
+ _starpu_worker_set_status_scheduling_done(workers[i].workerid);
|
|
|
+ _starpu_worker_set_status_wakeup(workers[i].workerid);
|
|
|
+ STARPU_PTHREAD_MUTEX_UNLOCK(&workers[i].sched_mutex);
|
|
|
+
|
|
|
count ++;
|
|
|
j = _starpu_get_job_associated_to_task(tasks[i]);
|
|
|
is_parallel_task = (j->task_size > 1);
|
|
@@ -370,13 +373,11 @@ int _starpu_get_multi_worker_task(struct _starpu_worker *workers, struct starpu_
|
|
|
workers[i].worker_size = 1;
|
|
|
workers[i].current_rank = 0;
|
|
|
}
|
|
|
-
|
|
|
- _starpu_worker_set_status_scheduling_done(workers[i].workerid);
|
|
|
- _starpu_worker_set_status_wakeup(workers[i].workerid);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
_starpu_worker_set_status_sleeping(workers[i].workerid);
|
|
|
+ STARPU_PTHREAD_MUTEX_UNLOCK(&workers[i].sched_mutex);
|
|
|
}
|
|
|
}
|
|
|
}
|