|
@@ -264,10 +264,8 @@ static int _starpu_push_task_on_specific_worker(struct starpu_task *task, int wo
|
|
|
int j;
|
|
|
for (j = 0; j < worker_size; j++)
|
|
|
{
|
|
|
- struct starpu_task *alias = starpu_task_dup(task);
|
|
|
int subworkerid = combined_workerid[j];
|
|
|
- alias->destroy = 1;
|
|
|
- _starpu_push_task_on_specific_worker_notify_sched(alias, _starpu_get_worker_struct(subworkerid), subworkerid, workerid);
|
|
|
+ _starpu_push_task_on_specific_worker_notify_sched(task, _starpu_get_worker_struct(subworkerid), subworkerid, workerid);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -326,6 +324,7 @@ static int _starpu_push_task_on_specific_worker(struct starpu_task *task, int wo
|
|
|
|
|
|
STARPU_PTHREAD_BARRIER_INIT(&job->before_work_barrier, NULL, worker_size);
|
|
|
STARPU_PTHREAD_BARRIER_INIT(&job->after_work_barrier, NULL, worker_size);
|
|
|
+ job->after_work_busy_barrier = worker_size;
|
|
|
|
|
|
/* Note: we have to call that early, or else the task may have
|
|
|
* disappeared already */
|
|
@@ -335,6 +334,7 @@ static int _starpu_push_task_on_specific_worker(struct starpu_task *task, int wo
|
|
|
for (j = 0; j < worker_size; j++)
|
|
|
{
|
|
|
struct starpu_task *alias = starpu_task_dup(task);
|
|
|
+ alias->destroy = 1;
|
|
|
|
|
|
worker = _starpu_get_worker_struct(combined_workerid[j]);
|
|
|
ret |= _starpu_push_local_task(worker, alias, 0);
|
|
@@ -502,6 +502,7 @@ int _starpu_push_task_to_workers(struct starpu_task *task)
|
|
|
|
|
|
STARPU_PTHREAD_BARRIER_INIT(&job->before_work_barrier, NULL, workers->nworkers);
|
|
|
STARPU_PTHREAD_BARRIER_INIT(&job->after_work_barrier, NULL, workers->nworkers);
|
|
|
+ job->after_work_busy_barrier = workers->nworkers;
|
|
|
|
|
|
/* Note: we have to call that early, or else the task may have
|
|
|
* disappeared already */
|
|
@@ -516,6 +517,7 @@ int _starpu_push_task_to_workers(struct starpu_task *task)
|
|
|
{
|
|
|
workerid = workers->get_next(workers, &it);
|
|
|
struct starpu_task *alias = starpu_task_dup(task);
|
|
|
+ alias->destroy = 1;
|
|
|
ret |= _starpu_push_task_on_specific_worker(alias, workerid);
|
|
|
}
|
|
|
}
|