Refactor cj preload in the nonbonded OpenCL kernels
commit3c373f91afce4c609c5b82f4d637fc46fef392df
authorSzilárd Páll <pall.szilard@gmail.com>
Tue, 29 Mar 2016 20:20:22 +0000 (29 22:20 +0200)
committerMark Abraham <mark.j.abraham@gmail.com>
Thu, 5 Apr 2018 13:12:23 +0000 (5 15:12 +0200)
treeaf64972d4dabc8a9a135c38f308838c13d667277
parent7fe6325a02cb86dfbc513e93fa8ee8165deb509a
Refactor cj preload in the nonbonded OpenCL kernels

This change hides the implementation detail of preload/load operation in
inline functions configured based on the source flavor.
One of the main benefits is that this corrects the "nowarp" force and
pruning kernels removing a warp assumption (that was violated on
hardware with <32 wide wavefronts).

A step towards correctness on alternative GPU hardware, so
Refs #2030

Change-Id: If88d11df6613eadc9b59e5f03c34bac52df3514b
src/gromacs/mdlib/nbnxn_ocl/nbnxn_ocl.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_kernel_pruneonly.clh
src/gromacs/mdlib/nbnxn_ocl/nbnxn_ocl_kernel_utils.clh