real grid_density;
char sbuf[22];
+ wallcycle_start(wcycle, ewcDOMDEC);
+
dd = cr->dd;
comm = dd->comm;
check_index_consistency(dd, top_global->natoms, ncg_mtop(top_global),
"after partitioning");
}
+
+ wallcycle_stop(wcycle, ewcDOMDEC);
}
t_nrnb *nrnb, gmx_wallcycle_t wcycle)
{
/* Repartition the domain decomposition */
- wallcycle_start(wcycle, ewcDOMDEC);
dd_partition_system(fplog, step, cr, FALSE, 1,
NULL, top_global, ir,
&ems->s, &ems->f,
mdatoms, top, fr, vsite, NULL, constr,
nrnb, wcycle, FALSE);
dd_store_state(cr->dd, &ems->s);
- wallcycle_stop(wcycle, ewcDOMDEC);
}
static void evaluate_energy(FILE *fplog, t_commrec *cr,
return (ewc >= ewcPME_REDISTXF && ewc < ewcPMEWAITCOMM);
}
+/* Subtract counter ewc_sub timed inside a timing block for ewc_main */
+static void subtract_cycles(wallcc_t *wcc, int ewc_main, int ewc_sub)
+{
+ if (wcc[ewc_sub].n > 0)
+ {
+ assert(wcc[ewc_main].c >= wcc[ewc_sub].c);
+
+ wcc[ewc_main].c -= wcc[ewc_sub].c;
+ }
+}
+
void wallcycle_sum(t_commrec *cr, gmx_wallcycle_t wc)
{
wallcc_t *wcc;
}
}
- if (wcc[ewcDDCOMMLOAD].n > 0)
- {
- wcc[ewcDOMDEC].c -= wcc[ewcDDCOMMLOAD].c;
- }
- if (wcc[ewcDDCOMMBOUND].n > 0)
- {
- wcc[ewcDOMDEC].c -= wcc[ewcDDCOMMBOUND].c;
- }
- if (wcc[ewcPME_FFTCOMM].n > 0)
- {
- wcc[ewcPME_FFT].c -= wcc[ewcPME_FFTCOMM].c;
- }
+ subtract_cycles(wcc, ewcDOMDEC, ewcDDCOMMLOAD);
+ subtract_cycles(wcc, ewcDOMDEC, ewcDDCOMMBOUND);
+
+ subtract_cycles(wcc, ewcPME_FFT, ewcPME_FFTCOMM);
if (cr->npmenodes == 0)
{
/* All nodes do PME (or no PME at all) */
- if (wcc[ewcPMEMESH].n > 0)
- {
- wcc[ewcFORCE].c -= wcc[ewcPMEMESH].c;
- }
+ subtract_cycles(wcc, ewcFORCE, ewcPMEMESH);
}
else
{
if (wcc[ewcPMEMESH].n > 0)
{
/* This must be a PME only node, calculate the Wait + Comm. time */
+ assert(wcc[ewcRUN].c >= wcc[ewcPMEMESH].c);
wcc[ewcPMEWAITCOMM].c = wcc[ewcRUN].c - wcc[ewcPMEMESH].c;
}
}
state_global, top_global, ir,
state, &f, mdatoms, top, fr,
vsite, shellfc, constr,
- nrnb, wcycle, FALSE);
+ nrnb, NULL, FALSE);
}
if (DOMAINDECOMP(cr))
{
/* Repartition the domain decomposition */
- wallcycle_start(wcycle, ewcDOMDEC);
dd_partition_system(fplog, step, cr,
bMasterState, nstglobalcomm,
state_global, top_global, ir,
vsite, shellfc, constr,
nrnb, wcycle,
do_verbose && !bPMETunePrinting);
- wallcycle_stop(wcycle, ewcDOMDEC);
}
}