From e5de04885338d032a9a8941d31d8794b03b03698 Mon Sep 17 00:00:00 2001 From: "Peter W. Draper" <p.w.draper@durham.ac.uk> Date: Fri, 11 Aug 2017 14:09:15 +0100 Subject: [PATCH] Fix up GIZMO SPH Also note that we don't adjust this value for MPI, in tests the number is just too unpredictable --- src/engine.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/engine.c b/src/engine.c index 63cdde149d..5080d88a84 100644 --- a/src/engine.c +++ b/src/engine.c @@ -2918,11 +2918,15 @@ int engine_estimate_nr_tasks(struct engine *e) { if (e->policy & engine_policy_hydro) { n1 += 36; n2 += 2; -#ifdef EXTRA_HYDRO_LOOP - n1 += 1; /* Apparently a lot more to see... */ +#ifdef WITH_MPI + n1 += 6; #endif + +#ifdef EXTRA_HYDRO_LOOP + n1 += 15; #ifdef WITH_MPI - n1 += 6; /* XXX check this */ + n1 += 2; +#endif #endif } if (e->policy & engine_policy_self_gravity) { @@ -2949,7 +2953,14 @@ int engine_estimate_nr_tasks(struct engine *e) { } message("n1 = %d, n2 = %d (%d/%d)", n1, n2, e->s->tot_cells, e->s->nr_cells); double ntasks = n1 * e->s->nr_cells + n2 * (e->s->tot_cells - e->s->nr_cells); + + /* In principle we need fewer tasks per rank when using MPI, but we could + * have imbalances, so we don't allow for it. */ + //if (e->nr_nodes > 1) + // ntasks /= (e->nr_nodes - 1); + tasks_per_cell = ceil(ntasks / e->s->tot_cells); + if (tasks_per_cell < 1.0) tasks_per_cell = 1.0; if (e->verbose) message("tasks per cell estimated as: %d, maximum tasks: %d", tasks_per_cell, e->s->tot_cells * tasks_per_cell); -- GitLab