Introduce GpuBonded
This pimpl-ed class hides the GPU implementation details from
the high-level calling code.
Moved all GPU bonded force-calculation management code into the same
source file, separating them from the kernel definition and launch
file, which may help improve compilation time also.
Bound the kernel launch parameters for device buffers to GpuBonded
directly after neighbour search, for simplicity and efficiency. That
call now comes slightly later in the search-step call sequence.
Separated the launch of the energies transfer and the function
that waits upon, preparing for future reorganization.
Introduced HostStdVector to decrease verbosity of GpuBonded::Impl
declaration.
Now that there is no reason to have the stream member of
GpuBondedLists as a void *, removed the excess indirection that
introduced.
Moved symbols into gmx namespace per style. Used the appropriate
inclusion guards on helper .cuh files.
Noted several TODOs for follow up work.
Refs #2724
Change-Id: I612d8f0f973e6cfcc33a8176ba9f2525297542c4
18 files changed: