Gromacs  5.1.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Functions
nbnxn_gpu_data_mgmt.h File Reference
#include "gromacs/gmxlib/gpu_utils/gpu_macros.h"
#include "gromacs/legacyheaders/types/hw_info.h"
#include "gromacs/legacyheaders/types/interaction_const.h"
#include "gromacs/legacyheaders/types/simple.h"
#include "gromacs/mdlib/nbnxn_gpu_types.h"
+ This graph shows which files directly or indirectly include this file:

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 (FILE *fplog, gmx_nbnxn_gpu_t **p_nb, const struct gmx_gpu_info_t *gpu_info, const gmx_gpu_opt_t *gpu_opt, const interaction_const_t *ic, nonbonded_verlet_group_t *nbv_grp, int my_gpu_index, 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 struct 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)
 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 struct 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_tnbnxn_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_gpu_t *  nb,
int  flags 
)

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

void nbnxn_gpu_free ( gmx_nbnxn_gpu_t *  nb)

Frees all GPU resources used for the nonbonded calculations.

struct gmx_wallclock_gpu_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.

void nbnxn_gpu_init ( FILE *  fplog,
gmx_nbnxn_gpu_t **  p_nb,
const struct gmx_gpu_info_t *  gpu_info,
const gmx_gpu_opt_t *  gpu_opt,
const interaction_const_t *  ic,
nonbonded_verlet_group_t *  nbv_grp,
int  my_gpu_index,
int  rank,
gmx_bool  bLocalAndNonlocal 
)

Initializes the data structures related to GPU nonbonded calculations.

void nbnxn_gpu_init_atomdata ( gmx_nbnxn_gpu_t *  nb,
const struct nbnxn_atomdata_t *  nbat 
)

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_gpu_t *  nb)

Returns if analytical Ewald GPU kernels are used.

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.

void nbnxn_gpu_reset_timings ( nonbonded_verlet_t *  nbv)

Resets nonbonded GPU timings.

Resets nonbonded GPU timings.

void nbnxn_gpu_upload_shiftvec ( gmx_nbnxn_gpu_t *  nb,
const struct nbnxn_atomdata_t *  nbatom 
)

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