Gromacs
2021
|
#include <gromacs/nbnxm/opencl/nbnxm_ocl_types.h>
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 | |
NBParamGpu * | nbparam = 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_t * | timers = nullptr |
CUDA event-based timers. | |
gmx_wallclock_gpu_nbnxn_t * | timings = nullptr |
Timing data. TODO: deprecate this and query timers for accumulated data instead. | |
struct gmx_device_runtime_data_t * | dev_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_t * | atdat = nullptr |
atom data | |
cl_timers_t * | timers = 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 ) | |
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_ |
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)