Feature #2816: GPU offload / optimization for update&constraits, buffer ops and multi-gpu communication
CUDA version of Leap Frog algorithm
The initial implementation works independently from other parts of the code, which require a temporary infrastructure to hide CUDA-specific types from CPU compiler, manage coordinates, velocities and forces, handle periodic boundary conditions. It is enabled by setting environmental variable "GMX_INTEGRATE_GPU".
Initial implementation as a stand-alone class. Make sure that all not supported cases exit with error. Temperature control. Pressure control. Tests against the exact solution of constant force case. Unify tests with the CPU version.
CUDA version of Leap-Frog integrator with basic tests
Part of the GPU-only loop. Curent version is as a stand-alone module,
with its own coordinate, velocities and forces data management.
To activate, set environment variable GMX_INTEGRATE_GPU.
-- Only basic Leap-Frog is implemented.
-- No temperature control.
-- No pressure control.
Make use of reference data in integrator tests
Current version of tests is based on exactly solvable model,
which does not allow for testing more sophisticated cases,
including when temperature or pressure control is enabled.
This commit adds the tests that are based on the reference
data, which can be generated for any existing use-case.
Add temperature coupling to CUDA Leap-Frog integrator
Velocity rescaling added to the integrator. None, one,
or multiple rescaling groups are supported. Tests that
include temperature coupling are added.
NoseHoover temperature control is not implemented.
Add Parrinello-Rahman pressure coupling to CUDA Leap-Frog integrator
Parrinello-Rahman isotropic pressure coupling scheme is now
added to CUDA version of the Leap-Frog integrator. The
Leap-Frog tests are updated to check the new addition.