Fix mdrun hanging upon exit with sep PME ranks
commit66ec44e6ffaf2a72b17a01aa16cd451bf7968217
authorSzilárd Páll <pall.szilard@gmail.com>
Tue, 7 Mar 2017 02:49:52 +0000 (7 03:49 +0100)
committerMark Abraham <mark.j.abraham@gmail.com>
Thu, 9 Mar 2017 15:08:04 +0000 (9 16:08 +0100)
tree431c34f7a6285350f1e000f74d9c92b7d4bc0419
parenta2d8c56cc76248823248130626b799420d414c93
Fix mdrun hanging upon exit with sep PME ranks

Commit 1d2d95e introduced a check and early return to skip printing perf
stats when no valid wallcycle data was collected (due to missed reset).
However, as the validity of wallcycle data does not get checked/recorded
on separate PME ranks, mdrun deadlocks before exit in collective comm
that PME ranks never enter.

This change fixes the hang by refactoring the printing code to use a
boolean rather than an early return. This means the normal code path
is unaffected in all cases (only the simulation master can ever write
reports), and the case where it is invalid to write a report
(premature termination) works correctly because all ranks communicate
the data for the report that is never written (and efficiency is not
of concern in this case).

Fixes #2131

Change-Id: If8b0813444d0b00a1a9a4a21d30fc8655c52752a
src/gromacs/mdlib/sim_util.cpp