Support persistent device context-derived data in PME tests
commitb2a95c76ac19622f8fa8e77ff689453d17823825
authorAleksei Iupinov <a.yupinov@gmail.com>
Thu, 26 Apr 2018 13:15:24 +0000 (26 15:15 +0200)
committerMark Abraham <mark.j.abraham@gmail.com>
Mon, 28 May 2018 13:11:53 +0000 (28 15:11 +0200)
treeb30c0536730ff590e6f63b897d2b2e87942377a3
parentdd76a1c2470dc5fabdc3d2082935cafcfd01e497
Support persistent device context-derived data in PME tests

PME OpenCL will need to not recompile kernels for running each
unit test. With this in mind, a persistent PmeGpuProgram class
is tasked with GPU kernel setup, and passed around, using a typedef.
The purpose of the class is to hold the PME program data that should
only be set up once and live forever for the given device context.
PmeGpuProgramImpl structure is now tasked with managing
function pointers to the CUDA kernels' instances, and will later
be tasked with compiling OpenCL kernels.

Refs #2453, #2522

Change-Id: I85a01bfc92ec3a108825414b14e2be3731433c9a
23 files changed:
src/gromacs/ewald/CMakeLists.txt
src/gromacs/ewald/pme-gather.cu
src/gromacs/ewald/pme-gpu-internal.cpp
src/gromacs/ewald/pme-gpu-internal.h
src/gromacs/ewald/pme-gpu-program-impl.cpp [new file with mode: 0644]
src/gromacs/ewald/pme-gpu-program-impl.cu [new file with mode: 0644]
src/gromacs/ewald/pme-gpu-program-impl.h [new file with mode: 0644]
src/gromacs/ewald/pme-gpu-program.cpp [new file with mode: 0644]
src/gromacs/ewald/pme-gpu-program.h [new file with mode: 0644]
src/gromacs/ewald/pme-gpu-types-host.h
src/gromacs/ewald/pme-solve.cu
src/gromacs/ewald/pme-spread.cu
src/gromacs/ewald/pme.cpp
src/gromacs/ewald/pme.h
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
src/gromacs/ewald/tests/testhardwarecontexts.h
src/gromacs/gpu_utils/gpu_macros.h
src/gromacs/mdrun/runner.cpp