#include "gromacs/mdtypes/interaction_const.h"
#include "gromacs/nbnxm/gpu_types_common.h"
#include "gromacs/nbnxm/nbnxm.h"
+#include "gromacs/nbnxm/nbnxm_gpu.h"
#include "gromacs/nbnxm/pairlist.h"
#include "gromacs/utility/enumerationhelpers.h"
#include "gromacs/utility/fatalerror.h"
const int c_oclPruneKernelJ4ConcurrencyDEFAULT = GMX_NBNXN_PRUNE_KERNEL_J4_CONCURRENCY_DEFAULT;
/*! @} */
-/*! \brief Electrostatic OpenCL kernel flavors.
- *
- * Types of electrostatics implementations available in the OpenCL non-bonded
- * force kernels. These represent both the electrostatics types implemented
- * by the kernels (cut-off, RF, and Ewald - a subset of what's defined in
- * enums.h) as well as encode implementation details analytical/tabulated
- * and single or twin cut-off (for Ewald kernels).
- * Note that the cut-off and RF kernels have only analytical flavor and unlike
- * in the CPU kernels, the tabulated kernels are ATM Ewald-only.
- *
- * The row-order of pointers to different electrostatic kernels defined in
- * nbnxn_cuda.cu by the nb_*_kfunc_ptr function pointer table
- * should match the order of enumerated types below.
- */
-enum eelOcl
-{
- eelOclCUT,
- eelOclRF,
- eelOclEWALD_TAB,
- eelOclEWALD_TAB_TWIN,
- eelOclEWALD_ANA,
- eelOclEWALD_ANA_TWIN,
- eelOclNR
-};
-
-/*! \brief VdW OpenCL kernel flavors.
- *
- * The enumerates values correspond to the LJ implementations in the OpenCL non-bonded
- * kernels.
- *
- * The column-order of pointers to different electrostatic kernels defined in
- * nbnxn_cuda.cu by the nb_*_kfunc_ptr function pointer table
- * should match the order of enumerated types below.
- */
-enum evdwOcl
-{
- evdwOclCUT,
- evdwOclCUTCOMBGEOM,
- evdwOclCUTCOMBLB,
- evdwOclFSWITCH,
- evdwOclPSWITCH,
- evdwOclEWALDGEOM,
- evdwOclEWALDLB,
- evdwOclNR
-};
-
/*! \brief Pruning kernel flavors.
*
* The values correspond to the first call of the pruning post-list generation
typedef struct cl_nbparam
{
- //! type of electrostatics, takes values from #eelOcl
+ //! type of electrostatics, takes values from #eelType
int eeltype;
- //! type of VdW impl., takes values from #evdwOcl
+ //! type of VdW impl., takes values from #evdwType
int vdwtype;
//! charge multiplication factor
typedef struct cl_nbparam_params
{
- //! type of electrostatics, takes values from #eelCu
+ //! type of electrostatics, takes values from #eelType
int eeltype;
- //! type of VdW impl., takes values from #evdwCu
+ //! type of VdW impl., takes values from #evdwType
int vdwtype;
//! charge multiplication factor
/**< Pointers to non-bonded kernel functions
* organized similar with nb_kfunc_xxx arrays in nbnxn_ocl.cpp */
///@{
- cl_kernel kernel_noener_noprune_ptr[eelOclNR][evdwOclNR] = { { nullptr } };
- cl_kernel kernel_ener_noprune_ptr[eelOclNR][evdwOclNR] = { { nullptr } };
- cl_kernel kernel_noener_prune_ptr[eelOclNR][evdwOclNR] = { { nullptr } };
- cl_kernel kernel_ener_prune_ptr[eelOclNR][evdwOclNR] = { { nullptr } };
+ cl_kernel kernel_noener_noprune_ptr[eelTypeNR][evdwTypeNR] = { { nullptr } };
+ cl_kernel kernel_ener_noprune_ptr[eelTypeNR][evdwTypeNR] = { { nullptr } };
+ cl_kernel kernel_noener_prune_ptr[eelTypeNR][evdwTypeNR] = { { nullptr } };
+ cl_kernel kernel_ener_prune_ptr[eelTypeNR][evdwTypeNR] = { { nullptr } };
///@}
//! prune kernels, ePruneKind defined the kernel kinds
cl_kernel kernel_pruneonly[ePruneNR] = { nullptr };