Gromacs  2020.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Macros | Typedefs | Enumerations | Functions
nbnxm_ocl_types.h File Reference
#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"
+ Include dependency graph for nbnxm_ocl_types.h:
+ This graph shows which files directly or indirectly include this file:

Description

Data types used internally in the nbnxm_ocl module.

Author
Anca Hamuraru anca@.nosp@m.stre.nosp@m.amcom.nosp@m.puti.nosp@m.ng.eu
Szilárd Páll pszil.nosp@m.ard@.nosp@m.kth.s.nosp@m.e

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 Documentation

typedef struct cl_atomdata cl_atomdata_t

Nonbonded atom data - both inputs and outputs.

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.

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 of actual timer type.

Enumeration Type Documentation

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.

Function Documentation

static int getOclPruneKernelJ4Concurrency ( int  vendorId)
inlinestatic

Returns the j4 processing concurrency parameter for the vendor vendorId.

Parameters
vendorIdtakes values from ocl_vendor_id_t.

Variable Documentation

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).