From 84ccc53b43196d2078fae1a24338428b512eafa2 Mon Sep 17 00:00:00 2001 From: Pedro Gonnet <gonnet@google.com> Date: Tue, 21 Jun 2016 21:59:35 +0200 Subject: [PATCH] do the drifts with the threadpool instead of with the scheduler, makes the simulation ~10% faster overall. --- src/engine.c | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/src/engine.c b/src/engine.c index b93ad838d8..c412169ca7 100644 --- a/src/engine.c +++ b/src/engine.c @@ -66,19 +66,11 @@ #include "timers.h" #include "units.h" -const char *engine_policy_names[13] = {"none", - "rand", - "steal", - "keep", - "block", - "fix_dt", - "cpu_tight", - "mpi", - "numa_affinity", - "hydro", - "self_gravity", - "external_gravity", - "cosmology_integration"}; +const char *engine_policy_names[13] = { + "none", "rand", "steal", "keep", + "block", "fix_dt", "cpu_tight", "mpi", + "numa_affinity", "hydro", "self_gravity", "external_gravity", + "cosmology_integration"}; /** The rank of the engine as a global variable (for messages). */ int engine_rank; @@ -1863,10 +1855,10 @@ int engine_marktasks_serial(struct engine *e) { t->flags = 0; t->skip = 1; } - + /* Single-cell task? */ else if (t->type == task_type_self || t->type == task_type_ghost || - t->type == task_type_sub_self) { + t->type == task_type_sub_self) { /* Set this task's skip. */ t->skip = (t->ci->ti_end_min > ti_end); @@ -1924,7 +1916,7 @@ int engine_marktasks_serial(struct engine *e) { else if (t->type == task_type_none) t->skip = 1; } - + /* All is well. */ return 0; } @@ -2505,7 +2497,9 @@ void engine_step(struct engine *e) { e->timeStep = (e->ti_current - e->ti_old) * e->timeBase + snapshot_drift_time; /* Drift everybody */ - engine_launch(e, e->nr_threads, 1 << task_type_drift, 0); + // engine_launch(e, e->nr_threads, 1 << task_type_drift, 0); + threadpool_map(&e->threadpool, runner_do_drift_mapper, e->s->cells, + e->s->nr_cells, sizeof(struct cell), 1, e); if (e->nodeID == 0) { -- GitLab