PME spline+spread CUDA kernel and unit tests
authorAleksei Iupinov <a.yupinov@gmail.com>
Mon, 5 Dec 2016 16:36:09 +0000 (17:36 +0100)
committerMark Abraham <mark.j.abraham@gmail.com>
Wed, 11 Oct 2017 11:49:12 +0000 (13:49 +0200)
commit76c7a1a4473c7d3e5c2b06d37e192dda84dffc5e
tree7638d60cd33dd892c72b061bdcfa98311adff779
parentb599158b476420ac7cefc4af61367781c0587a2c
PME spline+spread CUDA kernel and unit tests

The CUDA implementation of PME spline computation and charge spreading
for PME order 4 is added in pme-spread.cu.

The unit tests for PME CPU spline/spread stages
(e8cf7c0) are also extended to work with
the PME CUDA kernel, using the same reference data.
The tests iterate over all CUDA GPUs which are compatible with Gromacs.

Refs #2054, #2092.

Change-Id: If5ec49f030b9b94395db28fa454ea25c3efb05d1
21 files changed:
src/gromacs/ewald/pme-gpu-internal.cpp
src/gromacs/ewald/pme-gpu-internal.h
src/gromacs/ewald/pme-gpu-types.h
src/gromacs/ewald/pme-gpu.cpp
src/gromacs/ewald/pme-spread.cu [new file with mode: 0644]
src/gromacs/ewald/pme.cu
src/gromacs/ewald/pme.cuh
src/gromacs/ewald/pme.h
src/gromacs/ewald/tests/CMakeLists.txt
src/gromacs/ewald/tests/pmegathertest.cpp
src/gromacs/ewald/tests/pmesolvetest.cpp
src/gromacs/ewald/tests/pmesplinespreadtest.cpp
src/gromacs/ewald/tests/pmetestcommon.cpp
src/gromacs/ewald/tests/pmetestcommon.h
src/gromacs/ewald/tests/testhardwarecontexts.cpp [new file with mode: 0644]
src/gromacs/ewald/tests/testhardwarecontexts.h [new file with mode: 0644]
src/gromacs/gpu_utils/cuda_kernel_utils.cuh
src/gromacs/gpu_utils/cudautils.cu
src/gromacs/gpu_utils/cudautils.cuh
src/gromacs/taskassignment/hardwareassign.cpp
src/gromacs/taskassignment/hardwareassign.h