Gromacs
2020.4
|
#include "gromacs/gpu_utils/devicebuffer.h"
#include "gromacs/gpu_utils/gmxopencl.h"
#include "gromacs/gpu_utils/gputraits_ocl.h"
#include "gromacs/gpu_utils/oclutils.h"
#include "gromacs/mdtypes/interaction_const.h"
#include "gromacs/nbnxm/gpu_types_common.h"
#include "gromacs/nbnxm/nbnxm.h"
#include "gromacs/nbnxm/pairlist.h"
#include "gromacs/utility/enumerationhelpers.h"
#include "gromacs/utility/fatalerror.h"
#include "gromacs/utility/real.h"
#include "nbnxm_ocl_consts.h"
Data types used internally in the nbnxm_ocl module.
Classes | |
struct | cl_nb_staging |
Staging area for temporary data downloaded from the GPU. More... | |
struct | cl_atomdata |
Nonbonded atom data - both inputs and outputs. More... | |
struct | cl_nbparam |
Parameters required for the OpenCL nonbonded calculations. More... | |
struct | cl_nbparam_params |
Data structure shared between the OpenCL device code and OpenCL host code. More... | |
struct | gmx_nbnxn_ocl_t |
Main data structure for OpenCL nonbonded force calculations. More... | |
Macros | |
#define | M_FLOAT_1_SQRTPI 0.564189583547756f |
Define 1/sqrt(pi) | |
Typedefs | |
typedef struct cl_nb_staging | cl_nb_staging_t |
Staging area for temporary data downloaded from the GPU. More... | |
typedef struct cl_atomdata | cl_atomdata_t |
Nonbonded atom data - both inputs and outputs. More... | |
typedef struct cl_nbparam | cl_nbparam_t |
Parameters required for the OpenCL nonbonded calculations. More... | |
typedef struct cl_nbparam_params | cl_nbparam_params_t |
Data structure shared between the OpenCL device code and OpenCL host code. More... | |
using | cl_plist_t = Nbnxm::gpu_plist |
Pair list data. More... | |
typedef struct Nbnxm::gpu_timers_t | cl_timers_t |
Typedef of actual timer type. More... | |
Enumerations | |
enum | eelOcl { eelOclCUT, eelOclRF, eelOclEWALD_TAB, eelOclEWALD_TAB_TWIN, eelOclEWALD_ANA, eelOclEWALD_ANA_TWIN, eelOclNR } |
Electrostatic OpenCL kernel flavors. More... | |
enum | evdwOcl { evdwOclCUT, evdwOclCUTCOMBGEOM, evdwOclCUTCOMBLB, evdwOclFSWITCH, evdwOclPSWITCH, evdwOclEWALDGEOM, evdwOclEWALDLB, evdwOclNR } |
VdW OpenCL kernel flavors. More... | |
enum | ePruneKind { epruneFirst, epruneRolling, ePruneNR } |
Pruning kernel flavors. More... | |
Functions | |
static int | getOclPruneKernelJ4Concurrency (int vendorId) |
Returns the j4 processing concurrency parameter for the vendor vendorId . More... | |
Variables | |
const int | c_oclPruneKernelJ4ConcurrencyDEFAULT = 4 |
Constants for platform-dependent defaults for the prune kernel's j4 processing concurrency. More... | |
typedef struct cl_atomdata cl_atomdata_t |
Nonbonded atom data - both inputs and outputs.
typedef struct cl_nb_staging cl_nb_staging_t |
Staging area for temporary data downloaded from the GPU.
The energies/shift forces get downloaded here first, before getting added to the CPU-side aggregate values.
typedef struct cl_nbparam_params cl_nbparam_params_t |
Data structure shared between the OpenCL device code and OpenCL host code.
Must not contain OpenCL objects (buffers) TODO: review, improve
typedef struct cl_nbparam cl_nbparam_t |
Parameters required for the OpenCL nonbonded calculations.
using cl_plist_t = Nbnxm::gpu_plist |
Pair list data.
typedef struct Nbnxm::gpu_timers_t cl_timers_t |
Typedef of actual timer type.
enum eelOcl |
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 ePruneKind |
Pruning kernel flavors.
The values correspond to the first call of the pruning post-list generation and the rolling pruning, respectively.
enum evdwOcl |
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.
|
inlinestatic |
Returns the j4 processing concurrency parameter for the vendor vendorId
.
vendorId | takes values from ocl_vendor_id_t. |
const int c_oclPruneKernelJ4ConcurrencyDEFAULT = 4 |
Constants for platform-dependent defaults for the prune kernel's j4 processing concurrency.
Initialized using macros that can be overridden at compile-time (using GMX_NBNXN_PRUNE_KERNEL_J4_CONCURRENCY).