diff --git a/src/engine.c b/src/engine.c index 6e028ce4a2126cac330f059f0ebf02aab42f17a3..574383e3890821db4c189d8cc3b6ad155c8f0d1c 100644 --- a/src/engine.c +++ b/src/engine.c @@ -1381,7 +1381,6 @@ void engine_count_and_link_tasks(struct engine *e) { if (t->type == task_type_sort && t->ci->split) for (int j = 0; j < 8; j++) if (t->ci->progeny[j] != NULL && t->ci->progeny[j]->sorts != NULL) { - t->ci->progeny[j]->sorts->skip = 0; scheduler_addunlock(sched, t->ci->progeny[j]->sorts, t); } @@ -2151,13 +2150,13 @@ int engine_marktasks(struct engine *e) { /* Multiple-timestep case */ } else { - + /* Run through the tasks and mark as skip or not. */ size_t extra_data[3] = {e->ti_current, rebuild_space, (size_t)&e->sched}; - scheduler_clear_active(&e->sched); threadpool_map(&e->threadpool, engine_marktasks_mapper, s->tasks, s->nr_tasks, sizeof(struct task), 10000, extra_data); rebuild_space = extra_data[1]; + message("scheduler active tasks: %i", e->sched.active_count); } if (e->verbose) diff --git a/src/scheduler.c b/src/scheduler.c index 8a84d1268008f87aff92a907f69196a1fa527a4b..c58db502cd98017e9f32daabf1f37e500af32d98 100644 --- a/src/scheduler.c +++ b/src/scheduler.c @@ -1119,6 +1119,9 @@ void scheduler_start(struct scheduler *s, unsigned int mask, pthread_cond_signal(&s->sleep_cond); } } + + /* Clear the list of active tasks. */ + s->active_count = 0; /* To be safe, fire of one last sleep_cond in a safe way. */ pthread_mutex_lock(&s->sleep_mutex);