Pass the GPU streams to StatePropagatorDataGpu constructor
Now the StatePropagatorDataGpu has a local copy of all GPU streams and
manages the update stream. This will allow to select the specific stream
for a specific copy event in the follow-ups. The update stream is now
created in the constructor of the StatePropagatorDataGPU object, which
is a temporary solution until there is a separate device stream manager
(#3115).
Notes:
- The current implementation where StatePropagatorDataGpu is also used
on PME-only ranks, where many of the streams do not exist, without
any restriction on the methods which would require these streams is a
weakness of the design that will be dealt with in follow-up
- The OpenCL builds unconditionally use PME stream/context, since for
these this object is only used when the initial coordinates are copied.
- The update stream is created in the constructor, whereas the rest of
the streams is passed as arguments. This asymmentry will be removed
with introduction of the centralized management of context/streams.
Refs. #2816.
Change-Id: Ia9b1cabd1d3d4942dba8465c716bf644037581e7
15 files changed: