Gromacs  2025-dev-20241007-5b8bb96
 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 "gromacs/nbnxm/nbnxm_enums.h"
#include "gromacs/gpu_utils/device_stream_manager.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/gridset.h"
#include "gromacs/pbcutil/ishift.h"
#include "gromacs/timing/gpu_timing.h"
#include "gromacs/utility/cstringutil.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 gmx::DeviceStreamManager &, const interaction_const_t *, const PairlistParams &, const nbnxn_atomdata_t *, bool)
 
void gmx::gpu_pme_loadbal_update_param (nonbonded_verlet_t *, const interaction_const_t &)
 
void gmx::gpu_upload_shiftvec (NbnxmGpu *, const nbnxn_atomdata_t *)
 
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 *, const nbnxn_atomdata_t *)
 
void gmx::gpu_clear_outputs (NbnxmGpu *, bool)
 
struct 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 *)
 
void gmx::setupGpuShortRangeWorkLow (NbnxmGpu *, const gmx::ListedForcesGpu *, gmx::InteractionLocality)
 
bool gmx::haveGpuShortRangeWork (const NbnxmGpu *, gmx::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 *, gmx::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 &, NbnxmGpu *)
 
void gmx::gpu_free (NbnxmGpu *nb)
 This function is documented in the header file.
 
NBAtomDataGpu * gmx::gpuGetNBAtomData (NbnxmGpu *)
 
DeviceBuffer< gmx::RVecgmx::gpu_get_f (NbnxmGpu *)