Gromacs  2020.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
nbnxm_gpu.h File Reference
#include "gromacs/gpu_utils/gpu_macros.h"
#include "gromacs/math/vectypes.h"
#include "gromacs/mdtypes/locality.h"
#include "gromacs/utility/basedefinitions.h"
#include "gromacs/utility/real.h"
#include "atomdata.h"
#include "gpu_types.h"
+ Include dependency graph for nbnxm_gpu.h:
+ This graph shows which files directly or indirectly include this file:


Declare interface for GPU execution for NBNXN module.

Szilard Pall
Mark Abraham


void Nbnxm::gpu_copy_xq_to_gpu (gmx_nbnxn_gpu_t *nb, const struct nbnxn_atomdata_t *nbdata, gmx::AtomLocality aloc)
 Launch asynchronously the xq buffer host to device copy. More...
void Nbnxm::gpu_launch_kernel (gmx_nbnxn_gpu_t *nb, const gmx::StepWorkload &stepWork, gmx::InteractionLocality iloc)
 Launch asynchronously the nonbonded force calculations. More...
void Nbnxm::gpu_launch_kernel_pruneonly (gmx_nbnxn_gpu_t *nb, gmx::InteractionLocality iloc, int numParts)
 Launch asynchronously the nonbonded prune-only kernel. More...
void Nbnxm::gpu_launch_cpyback (gmx_nbnxn_gpu_t *nb, nbnxn_atomdata_t *nbatom, const gmx::StepWorkload &stepWork, gmx::AtomLocality aloc)
 Launch asynchronously the download of short-range forces from the GPU (and energies/shift forces if required).
bool Nbnxm::gpu_try_finish_task (gmx_nbnxn_gpu_t *nb, const gmx::StepWorkload &stepWork, gmx::AtomLocality aloc, real *e_lj, real *e_el, gmx::ArrayRef< gmx::RVec > shiftForces, GpuTaskCompletion completionKind, gmx_wallcycle *wcycle)
 Attempts to complete nonbonded GPU task. More...
float Nbnxm::gpu_wait_finish_task (gmx_nbnxn_gpu_t *nb, const gmx::StepWorkload &stepWork, gmx::AtomLocality aloc, real *e_lj, real *e_el, gmx::ArrayRef< gmx::RVec > shiftForces, gmx_wallcycle *wcycle)
 Completes the nonbonded GPU task blocking until GPU tasks and data transfers to finish. More...
int Nbnxm::nbnxn_gpu_pick_ewald_kernel_type (const interaction_const_t &ic)
 Selects the Ewald kernel type, analytical or tabulated, single or twin cut-off.
void Nbnxm::nbnxn_gpu_init_x_to_nbat_x (const Nbnxm::GridSet &gridSet, gmx_nbnxn_gpu_t *gpu_nbv)
 Initialization for X buffer operations on GPU. Called on the NS step and performs (re-)allocations and memory copies. !
void Nbnxm::nbnxn_gpu_x_to_nbat_x (const Nbnxm::Grid &grid, bool setFillerCoords, gmx_nbnxn_gpu_t *gpu_nbv, DeviceBuffer< float > d_x, GpuEventSynchronizer *xReadyOnDevice, gmx::AtomLocality locality, int gridId, int numColumnsMax)
 X buffer operations on GPU: performs conversion from rvec to nb format. More...
void Nbnxm::nbnxnInsertNonlocalGpuDependency (const gmx_nbnxn_gpu_t *nb, gmx::InteractionLocality interactionLocality)
 Sync the nonlocal stream with dependent tasks in the local queue. More...
void Nbnxm::setupGpuShortRangeWork (gmx_nbnxn_gpu_t *nb, const gmx::GpuBonded *gpuBonded, gmx::InteractionLocality iLocality)
 Set up internal flags that indicate what type of short-range work there is. More...
bool Nbnxm::haveGpuShortRangeWork (const gmx_nbnxn_gpu_t *nb, gmx::AtomLocality aLocality)
 Returns true if there is GPU short-range work for the given atom locality. More...
void Nbnxm::nbnxn_gpu_init_add_nbat_f_to_f (const int *cell, gmx_nbnxn_gpu_t *gpu_nbv, int natoms_total, GpuEventSynchronizer *localReductionDone)
 Initialization for F buffer operations on GPU.
void Nbnxm::nbnxn_gpu_add_nbat_f_to_f (gmx::AtomLocality atomLocality, DeviceBuffer< float > totalForcesDevice, gmx_nbnxn_gpu_t *gpu_nbv, void *pmeForcesDevice, gmx::ArrayRef< GpuEventSynchronizer *const > dependencyList, int atomStart, int numAtoms, bool useGpuFPmeReduction, bool accumulateForce)
 Force buffer operations on GPU. More...
void Nbnxm::nbnxn_wait_x_on_device (gmx_nbnxn_gpu_t *nb)
 sync CPU thread on coordinate copy to device More...