From d255638fa1b1185d3a13736bf4c801b7b33d7275 Mon Sep 17 00:00:00 2001 From: Pedro Gonnet <gonnet@google.com> Date: Fri, 28 Jul 2017 18:07:32 +0200 Subject: [PATCH] convert engine_count_and_link_tasks to a threadpool mapper function. --- src/engine.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/engine.c b/src/engine.c index dd511096b5..37a5a31671 100644 --- a/src/engine.c +++ b/src/engine.c @@ -1913,14 +1913,15 @@ void engine_make_hydroloop_tasks_mapper(void *map_data, int num_elements, * * @param e The #engine. */ -void engine_count_and_link_tasks(struct engine *e) { +void engine_count_and_link_tasks_mapper(void *map_data, int num_elements, + void *extra_data) { + struct engine *e = (struct engine *)extra_data; struct scheduler *const sched = &e->sched; - const int nr_tasks = sched->nr_tasks; - for (int ind = 0; ind < nr_tasks; ind++) { + for (int ind = 0; ind < num_elements; ind++) { + struct task *const t = &((struct task *)map_data)[ind]; - struct task *const t = &sched->tasks[ind]; struct cell *const ci = t->ci; struct cell *const cj = t->cj; @@ -2505,7 +2506,8 @@ void engine_maketasks(struct engine *e) { /* Count the number of tasks associated with each cell and store the density tasks in each cell, and make each sort depend on the sorts of its progeny. */ - engine_count_and_link_tasks(e); + threadpool_map(&e->threadpool, engine_count_and_link_tasks_mapper, + sched->tasks, sched->nr_tasks, sizeof(struct task), 0, e); /* Now that the self/pair tasks are at the right level, set the super * pointers. */ -- GitLab