Set global state on master rank only
commit7287c7e9eebc7ae29131b9851f297fc3f364c468
authorBerk Hess <hess@kth.se>
Wed, 6 Sep 2017 13:48:04 +0000 (6 15:48 +0200)
committerKasson <kasson@gmail.com>
Mon, 25 Sep 2017 17:28:38 +0000 (25 19:28 +0200)
tree95c1d8c30075682abc86187245d4e8edcae0ab76
parent7912057d2ad143df3d0443a68623e2abce4cac70
Set global state on master rank only

The global state class was initialized on the master rank
and broadcasted over all ranks. This lead to unnecessary communication
and it was difficult to know what part of the global state was up to
date at different points in the code.
Now only the master rank has a global state object.
This change requires conditional access to the global state pointer
for the few algorithms that use it.
Replaced bcast_state() by a function that only broadcasts x and box.
Also made the box pointer constant in domdec initialization.

Change-Id: I924487863abe096eeb0b3cbc944b4ba32898ef03
23 files changed:
src/gromacs/domdec/domdec.cpp
src/gromacs/domdec/domdec.h
src/gromacs/domdec/domdec_setup.cpp
src/gromacs/domdec/domdec_topology.cpp
src/gromacs/essentialdynamics/edsam.cpp
src/gromacs/essentialdynamics/edsam.h
src/gromacs/listed-forces/disre.cpp
src/gromacs/listed-forces/orires.cpp
src/gromacs/listed-forces/orires.h
src/gromacs/mdlib/broadcaststructs.cpp
src/gromacs/mdlib/md_support.cpp
src/gromacs/mdlib/md_support.h
src/gromacs/mdlib/mdoutf.cpp
src/gromacs/mdlib/mdrun.h
src/gromacs/mdlib/minimize.cpp
src/gromacs/mdlib/sim_util.cpp
src/gromacs/mdlib/sim_util.h
src/gromacs/pulling/pull_rotation.cpp
src/gromacs/pulling/pull_rotation.h
src/gromacs/swap/swapcoords.cpp
src/gromacs/swap/swapcoords.h
src/programs/mdrun/md.cpp
src/programs/mdrun/runner.cpp