Gromacs  2021.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Attributes
NbnxmGpu Struct Reference

#include <gromacs/nbnxm/opencl/nbnxm_ocl_types.h>

+ Collaboration diagram for NbnxmGpu:

Description

Main data structure for CUDA nonbonded force calculations.

Main data structure for OpenCL nonbonded force calculations.

Public Attributes

const DeviceContext * deviceContext_
 GPU device context. More...
 
bool bUseTwoStreams = false
 true if doing both local/non-local NB work on GPU
 
cu_atomdata_t * atdat = nullptr
 atom data
 
int * atomIndices = nullptr
 array of atom indices
 
int atomIndicesSize = 0
 size of atom indices
 
int atomIndicesSize_alloc = 0
 size of atom indices allocated in device buffer
 
int * cxy_na = nullptr
 x buf ops num of atoms
 
int ncxy_na = 0
 number of elements in cxy_na
 
int ncxy_na_alloc = 0
 number of elements allocated allocated in device buffer
 
int * cxy_ind = nullptr
 x buf ops cell index mapping
 
int ncxy_ind = 0
 number of elements in cxy_ind
 
int ncxy_ind_alloc = 0
 number of elements allocated allocated in device buffer
 
NBParamGpunbparam = nullptr
 parameters required for the non-bonded calc.
 
gmx::EnumerationArray
< Nbnxm::InteractionLocality,
Nbnxm::gpu_plist * > 
plist = { { nullptr } }
 pair-list data structures (local and non-local)
 
nb_staging_t nbst
 staging area where fshift/energies get downloaded
 
gmx::EnumerationArray
< Nbnxm::InteractionLocality,
const DeviceStream * > 
deviceStreams
 local and non-local GPU streams More...
 
gmx::EnumerationArray
< Nbnxm::InteractionLocality,
bool > 
haveWork = { { false } }
 True if there is work for the current domain in the respective locality. More...
 
GpuEventSynchronizer * xNonLocalCopyD2HDone = nullptr
 Event triggered when non-local coordinate buffer has been copied from device to host.
 
bool bDoTime = false
 True if event-based timing is enabled.
 
cu_timers_ttimers = nullptr
 CUDA event-based timers.
 
gmx_wallclock_gpu_nbnxn_ttimings = nullptr
 Timing data. TODO: deprecate this and query timers for accumulated data instead.
 
struct gmx_device_runtime_data_tdev_rundata = nullptr
 OpenCL runtime data (context, kernels) More...
 
cl_kernel kernel_pruneonly [ePruneNR] = { nullptr }
 prune kernels, ePruneKind defined the kernel kinds
 
bool bPrefetchLjParam = false
 true if prefetching fg i-atom LJ parameters should be used in the kernels More...
 
bool bNonLocalStreamActive = false
 true indicates that the nonlocal_done event was enqueued
 
cl_atomdata_tatdat = nullptr
 atom data
 
cl_timers_ttimers = nullptr
 OpenCL event-based timers.
 
cudaEvent_t nonlocal_done = nullptr
 Events used for synchronization. More...
 
cudaEvent_t misc_ops_and_local_H2D_done = nullptr
 Event triggered when the tasks issued in the local stream that need to precede the non-local force or buffer operation calculations are done (e.g. f buffer 0-ing, local x/q H2D, buffer op initialization in local stream that is required also by nonlocal stream )
 
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 } }
 
cl_kernel kernel_memset_f = nullptr
 
cl_kernel kernel_memset_f2 = nullptr
 
cl_kernel kernel_memset_f3 = nullptr
 
cl_kernel kernel_zero_e_fshift = nullptr
 
cl_event nonlocal_done = nullptr
 Events used for synchronization. More...
 
cl_event misc_ops_and_local_H2D_done = nullptr
 Event triggered when the tasks issued in the local stream that need to precede the non-local force or buffer operation calculations are done (e.g. f buffer 0-ing, local x/q H2D, buffer op initialization in local stream that is required also by nonlocal stream )
 

Member Data Documentation

bool NbnxmGpu::bPrefetchLjParam = false

true if prefetching fg i-atom LJ parameters should be used in the kernels

auxiliary kernels implementing memset-like functions

struct gmx_device_runtime_data_t* NbnxmGpu::dev_rundata = nullptr

OpenCL runtime data (context, kernels)

Pointers to non-bonded kernel functions organized similar with nb_kfunc_xxx arrays in nbnxn_ocl.cpp

const DeviceContext * NbnxmGpu::deviceContext_

GPU device context.

Todo:
Make it constant reference, once NbnxmGpu is a proper class.
gmx::EnumerationArray< Nbnxm::InteractionLocality, const DeviceStream * > NbnxmGpu::deviceStreams

local and non-local GPU streams

local and non-local GPU queues

gmx::EnumerationArray< Nbnxm::InteractionLocality, bool > NbnxmGpu::haveWork = { { false } }

True if there is work for the current domain in the respective locality.

True if there has been local/nonlocal GPU work, either bonded or nonbonded, scheduled.

This includes local/nonlocal GPU work, either bonded or nonbonded, scheduled to be executed in the current domain. As long as bonded work is not split up into local/nonlocal, if there is bonded GPU work, both flags will be true.

cudaEvent_t NbnxmGpu::nonlocal_done = nullptr

Events used for synchronization.

Event triggered when the non-local non-bonded kernel is done (and the local transfer can proceed)

cl_event NbnxmGpu::nonlocal_done = nullptr

Events used for synchronization.

Event triggered when the non-local non-bonded kernel is done (and the local transfer can proceed)


The documentation for this struct was generated from the following files: