From d76b4aa1c336148360b857adabae2ceecc18b927 Mon Sep 17 00:00:00 2001 From: "Peter W. Draper" <p.w.draper@durham.ac.uk> Date: Mon, 13 Mar 2017 13:08:57 +0000 Subject: [PATCH] Stop repartitioning in the step after a repartition, that makes no sense and is unlikely to give interesting CPU times. Also remove some development output from timestep file --- src/engine.c | 27 +++++++++++++++------------ src/engine.h | 2 -- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/engine.c b/src/engine.c index 9b5f771f80..7f987db400 100644 --- a/src/engine.c +++ b/src/engine.c @@ -3054,10 +3054,9 @@ void engine_step(struct engine *e) { fflush(stdout); fprintf(e->file_timesteps, - " %6d %14e %14e %10zu %10zu %10zu %21.3f %3d %3d\n", e->step, + " %6d %14e %14e %10zu %10zu %10zu %21.3f\n", e->step, e->time, e->timeStep, e->updates, e->g_updates, e->s_updates, - e->wallclock_time, (e->lastrebuild > 0), - (e->lastrepart != REPART_NONE)); + e->wallclock_time); fflush(e->file_timesteps); } @@ -3071,17 +3070,24 @@ void engine_step(struct engine *e) { e->timeStep = (e->ti_current - e->ti_old) * e->timeBase; /* Prepare the tasks to be launched, rebuild or repartition if needed. */ +#ifdef WITH_MPI + int justrepart = (e->forcerepart != REPART_NONE); +#endif engine_prepare(e); /* Repartition the space amongst the nodes? */ #ifdef WITH_MPI - /* Old style if trigger is >1 or this is the second step. */ - if (e->reparttype->trigger > 1 || e->step == 2) { - if (e->reparttype->trigger > 1) { - if (e->step % (int)e->reparttype->trigger == 2) e->forcerepart = 1; - } else { - e->forcerepart = 1; + /* Old style if trigger is >1 or this is the second step, but we never + * repartition immediately after a repartition, those timings will not be + * representative. */ + if (e->reparttype->trigger > 1 || e->step == 2 || justrepart) { + if (! justrepart) { + if (e->reparttype->trigger > 1) { + if (e->step % (int)e->reparttype->trigger == 2) e->forcerepart = 1; + } else { + e->forcerepart = 1; + } } #ifdef SWIFT_DEBUG_TASKS @@ -3160,7 +3166,6 @@ void engine_step(struct engine *e) { /* All nodes do this together. */ MPI_Bcast(&e->forcerepart, 1, MPI_INT, 0, MPI_COMM_WORLD); - e->lastrepart = e->forcerepart; #endif /* Are we drifting everything (a la Gadget/GIZMO) ? */ @@ -3668,9 +3673,7 @@ void engine_init(struct engine *e, struct space *s, e->proxy_ind = NULL; e->nr_proxies = 0; e->forcerebuild = 1; - e->lastrebuild = 1; e->forcerepart = 0; - e->lastrepart = 0; e->reparttype = reparttype; e->dump_snapshot = 0; e->save_stats = 0; diff --git a/src/engine.h b/src/engine.h index 47940bb7cc..dba72cc97c 100644 --- a/src/engine.h +++ b/src/engine.h @@ -203,11 +203,9 @@ struct engine { /* Force the engine to rebuild? */ int forcerebuild; - int lastrebuild; /* Force the engine to repartition ? */ int forcerepart; - int lastrepart; struct repartition *reparttype; /* Need to dump some statistics ? */ -- GitLab