Gromacs
2016.6
|
#include "gromacs/gpu_utils/gpu_macros.h"
#include "gromacs/mdlib/nbnxn_gpu_types.h"
#include "gromacs/mdtypes/interaction_const.h"
Declare interface for GPU data transfer for NBNXN module.
Functions | |
void | nbnxn_gpu_init (gmx_nbnxn_gpu_t gmx_unused **p_nb, const struct gmx_gpu_info_t gmx_unused *gpu_info, const struct gmx_gpu_opt_t gmx_unused *gpu_opt, const interaction_const_t gmx_unused *ic, nonbonded_verlet_group_t gmx_unused *nbv_grp, int gmx_unused my_gpu_index, int gmx_unused rank, gmx_bool gmx_unused bLocalAndNonlocal) |
Initializes the data structures related to GPU nonbonded calculations. More... | |
void | nbnxn_gpu_init_pairlist (gmx_nbnxn_gpu_t gmx_unused *nb, const struct nbnxn_pairlist_t gmx_unused *h_nblist, int gmx_unused iloc) |
Initializes pair-list data for GPU, called at every pair search step. More... | |
void | nbnxn_gpu_init_atomdata (gmx_nbnxn_gpu_t gmx_unused *nb, const struct nbnxn_atomdata_t gmx_unused *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 gmx_unused *nbv, const interaction_const_t gmx_unused *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 gmx_unused *nb, const struct nbnxn_atomdata_t gmx_unused *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 gmx_unused *nb, int gmx_unused flags) |
Clears GPU outputs: nonbonded force, shift force and energy. More... | |
void | nbnxn_gpu_free (gmx_nbnxn_gpu_t gmx_unused *nb) |
Frees all GPU resources used for the nonbonded calculations. More... | |
struct gmx_wallclock_gpu_t * | nbnxn_gpu_get_timings (gmx_nbnxn_gpu_t gmx_unused *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 gmx_unused *nbv) |
Resets nonbonded GPU timings. More... | |
int | nbnxn_gpu_min_ci_balanced (gmx_nbnxn_gpu_t gmx_unused *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 gmx_unused *nb) |
Returns if analytical Ewald GPU kernels are used. More... | |
void nbnxn_gpu_clear_outputs | ( | gmx_nbnxn_gpu_t gmx_unused * | nb, |
int gmx_unused | flags | ||
) |
Clears GPU outputs: nonbonded force, shift force and energy.
void nbnxn_gpu_free | ( | gmx_nbnxn_gpu_t gmx_unused * | nb | ) |
Frees all GPU resources used for the nonbonded calculations.
struct gmx_wallclock_gpu_t* nbnxn_gpu_get_timings | ( | gmx_nbnxn_gpu_t gmx_unused * | nb | ) |
Returns the GPU timings structure or NULL if GPU is not used or timing is off.
void nbnxn_gpu_init | ( | gmx_nbnxn_gpu_t gmx_unused ** | p_nb, |
const struct gmx_gpu_info_t gmx_unused * | gpu_info, | ||
const struct gmx_gpu_opt_t gmx_unused * | gpu_opt, | ||
const interaction_const_t gmx_unused * | ic, | ||
nonbonded_verlet_group_t gmx_unused * | nbv_grp, | ||
int gmx_unused | my_gpu_index, | ||
int gmx_unused | rank, | ||
gmx_bool gmx_unused | bLocalAndNonlocal | ||
) |
Initializes the data structures related to GPU nonbonded calculations.
void nbnxn_gpu_init_atomdata | ( | gmx_nbnxn_gpu_t gmx_unused * | nb, |
const struct nbnxn_atomdata_t gmx_unused * | nbat | ||
) |
Initializes atom-data on the GPU, called at every pair search step.
void nbnxn_gpu_init_pairlist | ( | gmx_nbnxn_gpu_t gmx_unused * | nb, |
const struct nbnxn_pairlist_t gmx_unused * | h_nblist, | ||
int gmx_unused | 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 gmx_unused * | nb | ) |
Returns if analytical Ewald GPU kernels are used.
int nbnxn_gpu_min_ci_balanced | ( | gmx_nbnxn_gpu_t gmx_unused * | nb | ) |
Calculates the minimum size of proximity lists to improve SM load balance with GPU non-bonded kernels.
void nbnxn_gpu_reset_timings | ( | struct nonbonded_verlet_t gmx_unused * | nbv | ) |
Resets nonbonded GPU timings.
void nbnxn_gpu_upload_shiftvec | ( | gmx_nbnxn_gpu_t gmx_unused * | nb, |
const struct nbnxn_atomdata_t gmx_unused * | nbatom | ||
) |
Uploads shift vector to the GPU if the box is dynamic (otherwise just returns).