Gromacs  2024.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Functions
pme_load_balancing.h File Reference
#include "gromacs/math/vectypes.h"
#include "gromacs/timing/wallcycle.h"
+ This graph shows which files directly or indirectly include this file:

Description

This file contains function declarations necessary for managing automatic load balance of PME calculations (Coulomb and LJ).

Author
Berk Hess hess@.nosp@m.kth..nosp@m.se

Classes

class  gmx::ArrayRef< typename >
 STL-like interface to a C array of T (or part of a std container of T). More...
 

Functions

bool pme_loadbal_is_active (const pme_load_balancing_t *pme_lb)
 Return whether PME load balancing is active.
 
void pme_loadbal_init (pme_load_balancing_t **pme_lb_p, t_commrec *cr, const gmx::MDLogger &mdlog, const t_inputrec &ir, const matrix box, const interaction_const_t &ic, const nonbonded_verlet_t &nbv, gmx_pme_t *pmedata, gmx_bool bUseGPU)
 Initialize the PP-PME load balacing data and infrastructure. More...
 
void pme_loadbal_do (pme_load_balancing_t *pme_lb, struct t_commrec *cr, FILE *fp_err, FILE *fp_log, const gmx::MDLogger &mdlog, const t_inputrec &ir, t_forcerec *fr, const matrix box, gmx::ArrayRef< const gmx::RVec > x, gmx_wallcycle *wcycle, int64_t step, int64_t step_rel, gmx_bool *bPrinting, bool useGpuPmePpCommunication)
 Process cycles and PME load balance when necessary. More...
 
void pme_loadbal_done (pme_load_balancing_t *pme_lb, FILE *fplog, const gmx::MDLogger &mdlog, gmx_bool bNonBondedOnGPU)
 Finish the PME load balancing and print the settings when fplog!=NULL.
 

Function Documentation

void pme_loadbal_do ( pme_load_balancing_t *  pme_lb,
struct t_commrec *  cr,
FILE *  fp_err,
FILE *  fp_log,
const gmx::MDLogger mdlog,
const t_inputrec &  ir,
t_forcerec *  fr,
const matrix  box,
gmx::ArrayRef< const gmx::RVec x,
gmx_wallcycle *  wcycle,
int64_t  step,
int64_t  step_rel,
gmx_bool bPrinting,
bool  useGpuPmePpCommunication 
)

Process cycles and PME load balance when necessary.

Process the cycles measured over the last nstlist steps and then either continue balancing or check if we need to trigger balancing. Should be called after the WallCycleCounter::Step cycle counter has been stopped. Returns if the load balancing is printing to fp_err.

void pme_loadbal_init ( pme_load_balancing_t **  pme_lb_p,
t_commrec *  cr,
const gmx::MDLogger mdlog,
const t_inputrec &  ir,
const matrix  box,
const interaction_const_t &  ic,
const nonbonded_verlet_t nbv,
gmx_pme_t *  pmedata,
gmx_bool  bUseGPU 
)

Initialize the PP-PME load balacing data and infrastructure.

Initialize the PP-PME load balacing data and infrastructure. The actual load balancing might start right away, later or never. The PME grid in pmedata is reused for smaller grids to lower the memory usage.