Gromacs
5.1.5
|
#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"
Declare interface for GPU data transfer for NBNXN module.
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_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... | |
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).