Refactor to create a GpuTaskAssignments object
authorMark Abraham <mark.j.abraham@gmail.com>
Thu, 19 Sep 2019 14:51:21 +0000 (16:51 +0200)
committerMark Abraham <mark.j.abraham@gmail.com>
Fri, 20 Sep 2019 08:07:56 +0000 (10:07 +0200)
commitb396a73c764fff3834bb748e6be532cf43345233
tree0e2e1f6e1bc0f516b27e86e239842af285eda9d3
parenta8758ff07cfd75447a611bca14b1e409e00c3e62
Refactor to create a GpuTaskAssignments object

This change is purely reorganization, nothing is reordered or
functionality changed.

This expands on the previous vector of vectors of task assignments
into an object with the invariant of a completed assignment. It has
very complex construction logic, so it has a separate builder class
for the data that describes the decision about which GPUs are assigned
to tasks running on ranks on each physical node.

This refactoring prepares for re-ordering mdrun setup
so that the decision of rank duty by DD can lead to
task assignment, device initialization and the creation
of GPU contexts and streams with which to initialize
the various modules that use them to do their work.

Minor improvements to documentation and naming in a few places.

Change-Id: Idec71a3016212a4125b23b780e1059dbb134d7fb
16 files changed:
src/gromacs/domdec/domdec.cpp
src/gromacs/domdec/domdec.h
src/gromacs/gmxlib/network.cpp
src/gromacs/gmxlib/network.h
src/gromacs/hardware/gpu_hw_info.h
src/gromacs/hardware/hw_info.h
src/gromacs/mdrun/runner.cpp
src/gromacs/mdrunutility/multisim.cpp
src/gromacs/mdrunutility/multisim.h
src/gromacs/taskassignment/findallgputasks.cpp
src/gromacs/taskassignment/findallgputasks.h
src/gromacs/taskassignment/reportgpuusage.cpp
src/gromacs/taskassignment/reportgpuusage.h
src/gromacs/taskassignment/taskassignment.cpp
src/gromacs/taskassignment/taskassignment.h
src/gromacs/taskassignment/usergpuids.h