Gromacs  2026.0-dev-20250207-8469bad
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Typedefs | Functions
nbnxm_gpu_data_mgmt.cpp File Reference
#include "gmxpre.h"
#include "config.h"
#include <memory>
#include <type_traits>
#include "gromacs/gpu_utils/device_stream_manager.h"
#include "gromacs/gpu_utils/devicebuffer.h"
#include "gromacs/gpu_utils/gputraits.h"
#include "gromacs/gpu_utils/hostallocator.h"
#include "gromacs/hardware/device_information.h"
#include "gromacs/mdtypes/interaction_const.h"
#include "gromacs/mdtypes/simulation_workload.h"
#include "gromacs/nbnxm/gpu_common_utils.h"
#include "gromacs/nbnxm/gpu_data_mgmt.h"
#include "gromacs/nbnxm/gpu_types_common.h"
#include "gromacs/nbnxm/gridset.h"
#include "gromacs/nbnxm/nbnxm_enums.h"
#include "gromacs/pbcutil/ishift.h"
#include "gromacs/timing/gpu_timing.h"
#include "gromacs/utility/cstringutil.h"
#include "gromacs/utility/enumerationhelpers.h"
#include "gromacs/utility/exceptions.h"
#include "gromacs/utility/fatalerror.h"
#include "nbnxm_gpu.h"
#include "nbnxm_gpu_data_mgmt.h"
#include "pairlistsets.h"
+ Include dependency graph for nbnxm_gpu_data_mgmt.cpp:

Description

Define common implementation of nbnxm_gpu_data_mgmt.h.

Author
Anca Hamuraru anca@.nosp@m.stre.nosp@m.amcom.nosp@m.puti.nosp@m.ng.eu
Dimitrios Karkoulis dimit.nosp@m.ris..nosp@m.karko.nosp@m.ulis.nosp@m.@gmai.nosp@m.l.co.nosp@m.m
Teemu Virolainen teemu.nosp@m.@str.nosp@m.eamco.nosp@m.mput.nosp@m.ing.e.nosp@m.u
Szilárd Páll pall..nosp@m.szil.nosp@m.ard@g.nosp@m.mail.nosp@m..com
Artem Zhmurov zhmur.nosp@m.ov@g.nosp@m.mail..nosp@m.com

Typedefs

using gmx::GpuPairlistByLocality = EnumerationArray< InteractionLocality, std::unique_ptr< GpuPairlist >>
 

Functions

static void gmx::init_ewald_coulomb_force_table (const EwaldCorrectionTables &tables, NBParamGpu *nbp, const DeviceContext &deviceContext, const DeviceStream &deviceStream)
 
static bool gmx::useTabulatedEwaldByDefault (const DeviceInformation &deviceInfo)
 
static ElecType gmx::nbnxn_gpu_pick_ewald_kernel_type (const interaction_const_t &ic, const DeviceInformation &deviceInfo)
 
static void gmx::set_cutoff_parameters (NBParamGpu *nbp, const interaction_const_t &ic, const PairlistParams &listParams)
 
static void gmx::init_timings (gmx_wallclock_gpu_nbnxn_t *t)
 
static void gmx::initAtomdataFirst (NBAtomDataGpu *atomdata, int numTypes, const DeviceContext &deviceContext, const DeviceStream &localStream)
 Initialize atomdata first time; it only gets filled at pair-search.
 
static VdwType gmx::nbnxmGpuPickVdwKernelType (const interaction_const_t &ic, LJCombinationRule ljCombinationRule)
 
static ElecType gmx::nbnxmGpuPickElectrostaticsKernelType (const interaction_const_t &ic, const DeviceInformation &deviceInfo)
 
static void gmx::initNbparam (NBParamGpu *nbp, const interaction_const_t &ic, const PairlistParams &listParams, const nbnxn_atomdata_t::Params &nbatParams, const DeviceContext &deviceContext, const DeviceStream &localStream)
 Initialize the nonbonded parameter data structure.
 
static GpuPairlistByLocality gmx::initializeGpuLists (bool localAndNonLocal)
 
NbnxmGpu * gmx::gpu_init (const DeviceStreamManager &deviceStreamManager, const interaction_const_t *ic, const PairlistParams &listParams, const nbnxn_atomdata_t *nbat, const bool bLocalAndNonlocal)
 
void gmx::gpu_pme_loadbal_update_param (nonbonded_verlet_t *nbv, const interaction_const_t &ic)
 
void gmx::gpu_upload_shiftvec (NbnxmGpu *nb, const nbnxn_atomdata_t *nbatom)
 
void gmx::gpu_init_pairlist (NbnxmGpu *nb, const NbnxnPairlistGpu *h_plist, const InteractionLocality iloc)
 This function is documented in the header file.
 
void gmx::gpu_init_atomdata (NbnxmGpu *nb, const nbnxn_atomdata_t *nbat)
 
void gmx::gpu_clear_outputs (NbnxmGpu *nb, bool computeVirial)
 
gmx_wallclock_gpu_nbnxn_tgmx::gpu_get_timings (NbnxmGpu *nb)
 This function is documented in the header file.
 
void gmx::gpu_reset_timings (nonbonded_verlet_t *nbv)
 This function is documented in the header file.
 
bool gmx::gpu_is_kernel_ewald_analytical (const NbnxmGpu *nb)
 
void gmx::setupGpuShortRangeWorkLow (NbnxmGpu *nb, const ListedForcesGpu *listedForcesGpu, const InteractionLocality iLocality)
 
bool gmx::haveGpuShortRangeWork (const NbnxmGpu *nb, const InteractionLocality interactionLocality)
 
void gmx::gpu_launch_cpyback (NbnxmGpu *nb, struct nbnxn_atomdata_t *nbatom, const StepWorkload &stepWork, const AtomLocality atomLocality)
 Launch asynchronously the download of nonbonded forces from the GPU (and energies/shift forces if required).
 
void gmx::nbnxnInsertNonlocalGpuDependency (NbnxmGpu *nb, const InteractionLocality interactionLocality)
 
void gmx::gpu_copy_xq_to_gpu (NbnxmGpu *nb, const nbnxn_atomdata_t *nbatom, const AtomLocality atomLocality)
 Launch asynchronously the xq buffer host to device copy.
 
void gmx::nbnxn_gpu_init_x_to_nbat_x (const GridSet &gridSet, NbnxmGpu *gpu_nbv)
 
void gmx::gpu_free (NbnxmGpu *nb)
 This function is documented in the header file.
 
NBAtomDataGpu * gmx::gpuGetNBAtomData (NbnxmGpu *nb)
 
DeviceBuffer< RVec > gmx::gpu_get_f (NbnxmGpu *nb)