Implement alternating GPU wait
authorSzilárd Páll <pall.szilard@gmail.com>
Fri, 27 Oct 2017 16:24:36 +0000 (18:24 +0200)
committerMark Abraham <mark.j.abraham@gmail.com>
Wed, 6 Dec 2017 01:10:15 +0000 (02:10 +0100)
commit27eef47200e4bd955962596212e7f6c52368a75b
treeed3ef2e303950135f3034f86429a803bfffe43a9
parentc23d666ea1dad2cacdc2ef75c126e4174b8c17fe
Implement alternating GPU wait

When both PME and nonbonded tasks are offloaded, instead of waiting in a
blocking call for each task in a predefined order, we poll the GPU
streams and start the reduction of the forces of the task that finishes
first. This allows overlapping one of the reductions with the GPU
compute/transfer of the task arriving second.

Change-Id: I612a0c5cae54bee04c1d587b98b6fc534e766de6
13 files changed:
docs/user-guide/environment-variables.rst
src/gromacs/ewald/pme-gpu-internal.cpp
src/gromacs/ewald/pme-gpu-internal.h
src/gromacs/ewald/pme-gpu.cpp
src/gromacs/ewald/pme-only.cpp
src/gromacs/ewald/pme.cu
src/gromacs/ewald/pme.h
src/gromacs/gpu_utils/cudautils.cuh
src/gromacs/gpu_utils/gpu_utils.h
src/gromacs/gpu_utils/oclutils.h
src/gromacs/mdlib/nbnxn_gpu.h
src/gromacs/mdlib/nbnxn_gpu_common.h
src/gromacs/mdlib/sim_util.cpp