Gromacs  2018.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Functions
nbnxn_gpu_data_mgmt.h File Reference
#include "gromacs/gpu_utils/gpu_macros.h"
#include "gromacs/mdlib/nbnxn_gpu_types.h"
#include "gromacs/mdtypes/interaction_const.h"

Description

Declare interface for GPU data transfer for NBNXN module.

Author
Mark Abraham mark..nosp@m.j.ab.nosp@m.raham.nosp@m.@gma.nosp@m.il.co.nosp@m.m

Functions

void nbnxn_gpu_init (gmx_nbnxn_gpu_t **p_nb, const gmx_device_info_t *deviceInfo, const interaction_const_t *ic, const NbnxnListParameters *listParams, const nbnxn_atomdata_t *nbat, int rank, gmx_bool bLocalAndNonlocal)
 Initializes the data structures related to GPU nonbonded calculations. More...
 
void nbnxn_gpu_init_pairlist (gmx_nbnxn_gpu_t *nb, const struct nbnxn_pairlist_t *h_nblist, int iloc)
 Initializes pair-list data for GPU, called at every pair search step. More...
 
void nbnxn_gpu_init_atomdata (gmx_nbnxn_gpu_t *nb, const nbnxn_atomdata_t *nbat)
 Initializes atom-data on the GPU, called at every pair search step. More...
 
void nbnxn_gpu_pme_loadbal_update_param (const struct nonbonded_verlet_t *nbv, const interaction_const_t *ic, const NbnxnListParameters *listParams)
 Re-generate the GPU Ewald force table, resets rlist, and update the electrostatic type switching to twin cut-off (or back) if needed.
 
void nbnxn_gpu_upload_shiftvec (gmx_nbnxn_gpu_t *nb, const nbnxn_atomdata_t *nbatom)
 Uploads shift vector to the GPU if the box is dynamic (otherwise just returns). More...
 
void nbnxn_gpu_clear_outputs (gmx_nbnxn_gpu_t *nb, int flags)
 Clears GPU outputs: nonbonded force, shift force and energy. More...
 
void nbnxn_gpu_free (gmx_nbnxn_gpu_t *nb)
 Frees all GPU resources used for the nonbonded calculations. More...
 
struct gmx_wallclock_gpu_nbnxn_t * nbnxn_gpu_get_timings (gmx_nbnxn_gpu_t *nb)
 Returns the GPU timings structure or NULL if GPU is not used or timing is off. More...
 
void nbnxn_gpu_reset_timings (struct nonbonded_verlet_t *nbv)
 Resets nonbonded GPU timings. More...
 
int nbnxn_gpu_min_ci_balanced (gmx_nbnxn_gpu_t *nb)
 Calculates the minimum size of proximity lists to improve SM load balance with GPU non-bonded kernels. More...
 
gmx_bool nbnxn_gpu_is_kernel_ewald_analytical (const gmx_nbnxn_gpu_t *nb)
 Returns if analytical Ewald GPU kernels are used. More...
 

Function Documentation

void nbnxn_gpu_clear_outputs ( gmx_nbnxn_ocl_t *  nb,
int  flags 
)

Clears GPU outputs: nonbonded force, shift force and energy.

Clears GPU outputs: nonbonded force, shift force and energy.

void nbnxn_gpu_free ( gmx_nbnxn_ocl_t *  nb)

Frees all GPU resources used for the nonbonded calculations.

Frees all GPU resources used for the nonbonded calculations.

struct gmx_wallclock_gpu_nbnxn_t* nbnxn_gpu_get_timings ( gmx_nbnxn_ocl_t *  nb)

Returns the GPU timings structure or NULL if GPU is not used or timing is off.

Returns the GPU timings structure or NULL if GPU is not used or timing is off.

void nbnxn_gpu_init ( gmx_nbnxn_ocl_t **  p_nb,
const gmx_device_info_t *  deviceInfo,
const interaction_const_t *  ic,
const NbnxnListParameters *  listParams,
const nbnxn_atomdata_t *  nbat,
int  rank,
gmx_bool  bLocalAndNonlocal 
)

Initializes the data structures related to GPU nonbonded calculations.

Initializes the data structures related to GPU nonbonded calculations.

void nbnxn_gpu_init_atomdata ( gmx_nbnxn_ocl_t *  nb,
const nbnxn_atomdata_t *  nbat 
)

Initializes atom-data on the GPU, called at every pair search step.

Initializes atom-data on the GPU, called at every pair search step.

void nbnxn_gpu_init_pairlist ( gmx_nbnxn_gpu_t *  nb,
const struct nbnxn_pairlist_t *  h_nblist,
int  iloc 
)

Initializes pair-list data for GPU, called at every pair search step.

gmx_bool nbnxn_gpu_is_kernel_ewald_analytical ( const gmx_nbnxn_ocl_t *  nb)

Returns if analytical Ewald GPU kernels are used.

Returns if analytical Ewald GPU kernels are used.

int nbnxn_gpu_min_ci_balanced ( gmx_nbnxn_ocl_t *  nb)

Calculates the minimum size of proximity lists to improve SM load balance with GPU non-bonded kernels.

Calculates the minimum size of proximity lists to improve SM load balance with GPU non-bonded kernels.

void nbnxn_gpu_reset_timings ( nonbonded_verlet_t nbv)

Resets nonbonded GPU timings.

Resets nonbonded GPU timings.

void nbnxn_gpu_upload_shiftvec ( gmx_nbnxn_ocl_t *  nb,
const nbnxn_atomdata_t *  nbatom 
)

Uploads shift vector to the GPU if the box is dynamic (otherwise just returns).

Uploads shift vector to the GPU if the box is dynamic (otherwise just returns).