Improve collective error/warning/note handling in mdrun
"reduce" messages common to nodes to as few as possible; this applies both to notes (e.g. the note on using OMP_NUM_THREADS to set the number of OpenMP threads) and error messages that occur on multiple nodes (e.g. no GPU found on M nodes out of N in usd). This would enable easy and elegant way to do hardware consistency check across all nodes (e.g. inhomogeneous hardware setup).
Quiet stderr output, particularly for multi-simulations
- removed printing of DD info to stderr
- printed multi-simulation information only once in places where
repetition is clearly redundant (Some repetition remains,
but only from each simulation master.)
- add option to not print result of multi-simulation check
if it passed, so that we don't have to print things to
stderr/stdout just because the .log file is not yet open
- printing of diagnostics about the number of MPI
processes present when mdrun starts only goes (once) to
each debug file, and not to stderr
- reduced printing of diagnostics about the number of OpenMP
threads; now goes to stderr only on SIMMASTER, or
once to each debug file
- clarified errors and informational messages about selecting
the number of OpenMP threads
Make thread affinity failures always end up in log
Remove calls to md_print_warn(NULL, fplog, ...), which were used for
cases where only some of the ranks could fail. But if non-master rank
failed, the error went only to stderr, not into the log file. Make this
work more uniformly such that the error always ends up in the log file.
The approach could possibly be generalized (it is now local to
threadaffinity.cpp, and only works for warnings where the text is the
same on each rank), but that is probably easier after the logging is
Add some trailing newlines for consistent output from md_print_warn().
This also makes all md_print_warn/info calls use the same pattern, which
makes things easier to understand, and allows replacing them with a
Related to #1083.