Re-enable i-atom type local mem prefetch in OpenCL
authorSzilárd Páll <pall.szilard@gmail.com>
Fri, 11 Mar 2016 18:05:47 +0000 (19:05 +0100)
committerMark Abraham <mark.j.abraham@gmail.com>
Wed, 30 Mar 2016 17:02:03 +0000 (19:02 +0200)
commit001b6e76700a2228a60d28223f7fb37ed5b7d3be
tree5e5d8cde70ff0e243de5fe2e3a7f832a10994aa5
parenteab3c9d6b60cf23957830c44fdbd756d3780abba
Re-enable i-atom type local mem prefetch in OpenCL

For reasons unknown this has been disabled in the original OpenCL
implementation. However, it turns out that prefetching does have
substantial performance benefits, especially on AMD (>10%) and in some
cases on NVIDIA too (although not on Maxwell).

This change re-enables prefetching code-path and turns it on
for AMD devices. For NVIDIA the decision will be revisited later.

The GMX_OCL_ENABLE_I_PREFETCH/GMX_OCL_DISABLE_I_PREFETCH environment
variables allow testing prefetching with future architectures/compilers.

Change-Id: I8324d62d3d78e0a1577dd3125edf059d3b311c2f
docs/user-guide/environment-variables.rst
src/gromacs/mdlib/nbnxn_ocl/nbnxn_ocl.cpp
src/gromacs/mdlib/nbnxn_ocl/nbnxn_ocl_data_mgmt.cpp
src/gromacs/mdlib/nbnxn_ocl/nbnxn_ocl_jit_support.cpp
src/gromacs/mdlib/nbnxn_ocl/nbnxn_ocl_kernel_amd.clh
src/gromacs/mdlib/nbnxn_ocl/nbnxn_ocl_kernel_nowarp.clh
src/gromacs/mdlib/nbnxn_ocl/nbnxn_ocl_kernel_nvidia.clh
src/gromacs/mdlib/nbnxn_ocl/nbnxn_ocl_types.h